...compare strings with pattern matching?
Author: David Stidolph
function Matchstrings(Source, pattern: string): Boolean;
var
pSource: array [0..255] of Char;
pPattern: array [0..255] of Char;
function MatchPattern(element, pattern: PChar): Boolean;
function IsPatternWild(pattern: PChar): Boolean;
var
t: Integer;
begin
Result := StrScan(pattern, '*') <> nil;
if not Result then Result := StrScan(pattern, '?') <> nil;
end;
begin
if 0 = StrComp(pattern, '*') then
Result := True
else if (element^ = Chr(0)) and (pattern^ <> Chr(0)) then
Result := False
else if element^ = Chr(0) then
Result := True
else
begin
case pattern^ of
'*': if MatchPattern(element, @pattern[1]) then
Result := True
else
Result := MatchPattern(@element[1], pattern);
'?': Result := MatchPattern(@element[1], @pattern[1]);
else
if element^ = pattern^ then
Result := MatchPattern(@element[1], @pattern[1])
else
Result := False;
end;
end;
end;
begin
StrPCopy(pSource, Source);
StrPCopy(pPattern, pattern);
Result := MatchPattern(pSource, pPattern);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if Matchstrings('Sean Stanley', 'Sean*') then ShowMessage('strings match!');
if Matchstrings('Sean', 'Se?n') then ShowMessage('strings match!');
if not Matchstrings('Sean', 'Se?nn') then ShowMessage('strings don''t match!');
end;
printed from
www.swissdelphicenter.ch
developers knowledge base