![]() |
Schnelle Wildcart Suche
Hallo zusammen,
ich bin auf der Suche nach einer schnellen Möglichkeit in einer TList<string> zu Suchen. Das Ganze sollte auch Case Insensitiv möglich sein. Was wäre der beste Ansatz hierfür? Gibt es vielleicht was fertiges im aktuellen Delphi? |
AW: Schnelle Wildcart Suche
eine Frage warum TList<String> und nicht gleich eine Stringlist?
StringList hat indexOf('test') Grüße Klaus |
AW: Schnelle Wildcart Suche
Zitat:
|
AW: Schnelle Wildcart Suche
Es geht mir auch nicht um eine konkrete Lösung zu finden. Die habe ich.
Die ist aber viel zu langsam :-( Gibt ja genug Beispiele im Netz. Hier wäre eher die Erfahrung wichtig, was ist am schnellsten? Was fertiges in Delphi, RegEx, usw. |
AW: Schnelle Wildcart Suche
Zitat:
|
AW: Schnelle Wildcart Suche
Derzeit Suche ich so:
Code:
function MatchText(const aSubText, aText: string): Boolean;
var pSource: PChar; pPattern: PChar; function _MatchPattern(aElement, aPattern: PChar): Boolean; begin if 0 = StrComp(aPattern, '*') then Result := true else if (aElement^ = Chr(0)) and (aPattern^ <> Chr(0)) then Result := False else if aElement^ = Chr(0) then Result := true else begin case aPattern^ of '*': if _MatchPattern(aElement, @aPattern[1]) then Result := true else Result := _MatchPattern(@aElement[1], aPattern); '?': Result := _MatchPattern(@aElement[1], @aPattern[1]); else if aElement^ = aPattern^ then Result := _MatchPattern(@aElement[1], @aPattern[1]) else Result := False; end; end; end; begin pSource := PChar(aText); pPattern := PChar(aSubText); Result := _MatchPattern(pSource, pPattern); end; |
AW: Schnelle Wildcart Suche
Je nach Komplexität der Maske, TMask (unit System.Masks) ist schon sehr schnell.
...:cat:... |
AW: Schnelle Wildcart Suche
So, hab mal alles mögliche getestet, mit RegEx gehts am schnellsten, sogar schneller als TMask.
Danke für die Tipps |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz