uses SysUtils;
function IsLike(AString, Pattern: string): boolean;
var
j, n, n1, n2: integer ;
p1, p2: pchar ;
label
match, nomatch;
begin
AString := UpperCase(AString) ;
Pattern := UpperCase(Pattern) ;
n1 := Length(AString) ;
n2 := Length(Pattern) ;
if n1 < n2 then n := n1 else n := n2;
p1 := pchar(AString) ;
p2 := pchar(Pattern) ;
for j := 1 to n do begin
if p2^ = '*' then goto match;
if (p2^ <> '?') and ( p2^ <> p1^ ) then goto nomatch;
inc(p1) ; inc(p2) ;
end;
if n1 > n2 then begin
nomatch:
Result := False;
exit;
end else if n1 < n2 then begin
for j := n1 + 1 to n2 do begin
if not ( p2^ in ['*','?'] ) then goto nomatch ;
inc(p2) ;
end;
end;
match:
Result := True
end;
출처 : http://delphi.about.com
|