also bevor du mit der langsammen TStringList arbeitest dann besser so:
if Pos('-' + Bezeichnung + '-', '-rohr-schraube-schraubendreher-') > 0 then
Ist auch nicht sonderlich effizient, da Pos() benutzt wird, drüfte aber schneller sein als eine Schleife, TStringList oä.
Falls Pos() intern nach dem Boyer-Moore Algo. arbeitet ist die Stringsuche sogar sehr effizient.
Die schnellste Lösung dürfte ein Tree sein. In einem solchen Baum sind deine Suchwörter auf spezielle Weise gespeichert so das man darin sehr sehr schnell überprüfen kann ob ein gesuchtes Wort existiert. Je nach Baum-Typus und Codierung würde dieser sogar weniger Speicherplatz verwenden als die Strings wie in deinem Beispiel zu speichern. ZB. Schraube und Schraubedreher würde nur einmal Schraube und einmal "dreher" im Tree speichern. Eine sehr effiziente Tree Struktur im Source kannst du hier saugen:
http://www.michael-puff.de/Developer...agen_Reddmann/ Datei DWAG.zip
Das ist ein DAWG und so könntest du ihn benutzen:
Delphi-Quellcode:
var
List: TDawg = nil;
procedure InitList;
begin
List := TDawg.Create;
List.Insert('Schraube'#0'Schraubendreher'#0'Rohr');
List.Pack;
end;
procedure Search;
begin
if List.Exists(Suchstring) then
end;
Gruß Hagen