Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Problem mit Suche

  Alt 31. Mär 2008, 15:29
Hallo,

deinen Code habe ich mir erstmal anders hingeschrieben:

Delphi-Quellcode:
function MatchStr(Source, Pattern: string; CaseSensitive: Boolean = True): Boolean;

  function Match(Source, Pattern: PChar): Boolean;
  begin
    if StrComp(Pattern, '*') = 0 then Result := true else
    if (Source^ = Chr(0)) and (Pattern^ <> Chr(0)) then Result := false else
    if Source^ = Chr(0) then {Result := true} Exit else
    case Pattern^ of
      '*': Result := Match(Source, @Pattern[1]) or Match(@Source[1], Pattern);
      '?': Result := Match(@Source[1], @Pattern[1]);
      else Result := (Source^ = Pattern^) and Match(@Source[1], @Pattern[1]);
    end;
  end;

begin
  if not CaseSensitive then
  begin
    Source := AnsiLowerCase(Source);
    Pattern := AnsiLowerCase(Pattern);
  end;
  Result := Match(PChar(Source), PChar(Pattern))
end;
Bei langen Strings ist die Rekursion keine ökonomische Lösung.

Ich habe dir zusätzlich eine kleine Änderung eingebaut: Wenn du am Ende des Source-Strings angekommen bist, darfst du das Ergebnis nicht unbedingt auf FALSE setzen.

Grüße vom marabu
  Mit Zitat antworten Zitat