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