Mega Code Archive

 
Categories / Delphi / ADO Database
 

A simple Like function

Title: A simple Like function Question: Is there a LIKE function in Delphi that compares a string with a pattern? Answer: Sometimes we need to know if a string matches a pattern, which is a string with wildcards (for example '?' and '*'). Here we implement a function that returns True if the string matches the pattern and False if not. function Like(AString, Pattern: string): boolean; var i, 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 p1 := pchar(AString); p2 := pchar(Pattern); for i := 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 for i := n1 + 1 to n2 do begin if not (p2^ in ['*','?']) then goto nomatch; inc(p2); end; end; match: Result := True; end; Sample call ----------- if Like('Walter', 'WA?T*') then ShowMessage('It worked!'); If you want to see another example, we use this function to determine if a file name matches a specification in the article "Determining if a file name matches a specification" (keyword: MatchesSpec).