Q:  How do I find one string inside another with wildcards?

A:  There are many times when you need to compare two strings, but want to use wild cards in the match - all last names that begin with 'St', etc.  The following is a piece of code I got from Sean Stanley in Tallahassee Florida
in C.  I translated it into Delphi an am uploading it here for all to use. I have not tested it extensivly, but the original function has been tested quite thoughly.

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;