![]() |
Zwei Stringlisten miteinander vergleichen. Wie am besten ?
Hallo zuasmmen,
wie kann ich am besten zwei Stringlisten miteinander vergleichen ? Gruss Holger |
Re: Zwei Stringlisten miteinander vergleichen. Wie am besten
Hallo,
von beiden 'ne MD5-Summe bilden, dann sind sie gleich oder nicht. Oder brauchst Du Informationen über die Unterschiede? Sortieren und zeilenweise vergleichen. In 'ner Schleife durch die erste Liste gehen und mit IndexOf in der zweiten Suchen, wenn IndexOf > -1 in beiden Liste löschen, was über bleibt ist sind die Unterschiede. |
Re: Zwei Stringlisten miteinander vergleichen. Wie am besten
Für eine reine Gleichheitsabfrage müsste auch CompareMem() gehen.
|
Re: Zwei Stringlisten miteinander vergleichen. Wie am besten
Ich brauche beides. Als erstes wird geprüft ob der Count unterschiedlich ist. Dann baucht auch ncciht mehr verglichen werden. Wenn der Count gleich ist, muss der Inhalt noch verglichen werden. Wie baue ich so eine For-Schleife am besten auf (Performance) ?
Wie nutzt man CompareMem() ? |
Re: Zwei Stringlisten miteinander vergleichen. Wie am besten
Zitat:
Delphi-Quellcode:
Wie groß sind die Listen und was musst Du in Bezug auf Unterschied wissen?
if StringListe1.Text = StringListe2.Text then ShowMessage('Sindsichgleich')
Reicht es, wenn Du weißt, dass es einen Unterschied gibt oder musst Du die Unterschiede auflisten... Ist die Reihenfolge von Bedeutung? Wenn nein:
Delphi-Quellcode:
Ist die Reihenfolge von Bedeutung, dann ohne Sort.
StringListe1.Sort;
StringListe2.Sort; bSindgleich := True; For i := 0 to StringListe1.Count - 1 Do Begin bSindGleich := StringListe1[i] = StringListe2[i]; if not bSindGleich then break; end; |
Re: Zwei Stringlisten miteinander vergleichen. Wie am besten
Mal aus dem Hut:
Delphi-Quellcode:
Gleich := CompareMem(PChar(sl1.Text),PChar(sl2.Text),Length(sl1.Text));
|
Re: Zwei Stringlisten miteinander vergleichen. Wie am besten
Hi,
es geht um eine reine Abfrage ob der Inhalt gleich ist. Beispiel: ST1 hat A,B,C und ST2 hat C,A,B -> sindgleich Beispie2: ST1 hat A,B,C und ST2 hat A,B,D -> sind ungleich Geht das mit CompareMem ? |
Re: Zwei Stringlisten miteinander vergleichen. Wie am besten
neeee
// edit: oder doch?! erst beide sortieren, dann CompareMem() |
Re: Zwei Stringlisten miteinander vergleichen. Wie am besten
Zitat:
Sollte dann wohl vorher geprüft werden. Also:
Delphi-Quellcode:
und dann in 'ner Schleife oder wirklich per MD5.
If sl1.Count <> sl2.Count then Exit;
If Length(sl1.Text) <> Length(sl2.Text) then Exit; If sl1.Text <> sl2.Text Then Exit; Wenn es um sowas wie in Deinem Beispiel geht, dann
Delphi-Quellcode:
sl1.Sort;
sl2.Sort; if sl1.Text <> sl2.Text then // sind unterschiedlich |
Re: Zwei Stringlisten miteinander vergleichen. Wie am besten
Oder erst die Anzahl der jeweils enthaltenen Strings ermitteln und dann in einer Schleife mit IndexOf() vergleichen. Dies dürfte aber nicht die schnellste Methode sein.
[edit] Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:48 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