[Back to FILES SWAG index] [Back to Main SWAG index] [Original]
Unit WildChck;
{$O+}
Interface
Function MatchWC(WC,S : String):Boolean;
Implementation
Type BooleanRA = Array[Boolean] Of String[5];
Const TorF_Str : BooleanRA = ('False','True ');
Procedure Upper(Var S : String);
Var i : Byte;
Begin
For i := 1 To Length(S) Do S[i] := UpCase(S[i]);
End;
Function MatchWC(WC,S : String):Boolean;
Var
WCLen : Byte ABSOLUTE WC;
SLen : Byte ABSOLUTE S;
is,iw : Byte;
Match : Boolean;
Begin
Match := True; is := 1; iw := 1;Upper(WC);Upper(S);
While (iw <= WCLen) AND (is <= SLen) AND (Match) Do Begin
Case WC[iw] Of
'?' : Begin Inc(is); Inc(iw);
End; {'?'}
'*' : Begin
While ((WC[iw] = '?') OR (WC[iw] = '*')) AND
(iw <= WCLen) Do Inc(iw);
If iw <= WCLen Then Begin
While (WC[iw] <> S[is]) AND (is <= SLen) Do
Inc(is);
If (is <= Slen) AND (WC[iw] = S[is]) Then Begin
Inc(is); Inc(iw); End
Else Match := False;
End;
End; {'*'}
Else {Else for Case}
If WC[iw] = S[is] Then Begin
Inc(iw); Inc(is); End
Else Match := False;
End; {Case}
End; {While}
MatchWC := Match;
End;
end.
[Back to FILES SWAG index] [Back to Main SWAG index] [Original]