Einzelnen Beitrag anzeigen

SaschaM

Registriert seit: 7. Okt 2004
Ort: Wien
5 Beiträge
 
#30

Re: Prüfen ob Wörter in einem String vorkommen, Reihenfolge

  Alt 8. Okt 2004, 17:49
Aike, du hast zwei Listen, die Du miteinander vergleichen willst; die Daten sind entweder schon in zwei Stringlisten gespeichert oder noch als Text, getrennt mit einem beliebigen Zeichen (zb [,] oder [Leerzeichen]).

Du willst entweder wissen, ob zumindest ein String in der Liste des anderen vorkommt (siehe Code) oder ob alle übereinstimmen. Anstatt mit einer for i:= ... Schleife durchzulaufen, kannst du das sie Stringlisten für dich erledigen lassen. Die Parameter Commatext1 und Commatext2 sind die beiden Listen; Delimiter gibt an, welches Zeichen die einzelnen Elemente trennt.

Wichtig ist, daß

TStringList.Sorted := True eingestellt ist, sonst klappt das ganze nicht so.

Mit der Eigenschaft TStringList.Duplicate kannst du angeben, wie eine Stringliste auf Duplikate reagieren soll (siehe Delphi-Hilfe); ein weitere Hinzufügen von Elementen mittels AddStrings oder Add wird dann entsprechend gesteuert (dupIgnore = nichts tun, dupError: Fehler auslösen, dupAccept = Duplikat hinzufügen);

so erhälst Du durch:


Delphi-Quellcode:
     
with tstr1 do begin
   Duplicates := dupError;
   try
      AddStrings(tstr2);
      Result := False;
   except
      Result := True;
   end;
end;
True, sobald nur ein Element in der anderen Liste vorhanden ist.

Oder, Du willst einen Vergleich auf ALLE Elemente: Du läßt alle Elemente hinzufügen, gibst aber an, daß Duplikate nicht erlaubt sind: Ist die Anzahl der Elemente vorher gleich hoch wie nachher, waren alle gleich:

Delphi-Quellcode:
with tstr1 do begin
   Duplicates := dupIgnore;
   AnzahlElemente := tstr1.Count;
   AddStrings(tstr2);
   Result := (AnzahlElemente = tstr1.Count);
end;
klar?
sascha
  Mit Zitat antworten Zitat