Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#6

Re: Variable mit mehreren Werten vergleichen ohne "OR&a

  Alt 28. Nov 2006, 09:48
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
  Mit Zitat antworten Zitat