AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Zwei Stringlisten miteinander vergleichen. Wie am besten ?
Thema durchsuchen
Ansicht
Themen-Optionen

Zwei Stringlisten miteinander vergleichen. Wie am besten ?

Ein Thema von HolgerCW · begonnen am 21. Nov 2008 · letzter Beitrag vom 21. Nov 2008
Antwort Antwort
Seite 1 von 3  1 23      
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#1

Zwei Stringlisten miteinander vergleichen. Wie am besten ?

  Alt 21. Nov 2008, 10:21
Hallo zuasmmen,

wie kann ich am besten zwei Stringlisten miteinander vergleichen ?

Gruss

Holger
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

Re: Zwei Stringlisten miteinander vergleichen. Wie am besten

  Alt 21. Nov 2008, 10:35
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.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#3

Re: Zwei Stringlisten miteinander vergleichen. Wie am besten

  Alt 21. Nov 2008, 10:37
Für eine reine Gleichheitsabfrage müsste auch CompareMem() gehen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#4

Re: Zwei Stringlisten miteinander vergleichen. Wie am besten

  Alt 21. Nov 2008, 10:43
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() ?
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#5

Re: Zwei Stringlisten miteinander vergleichen. Wie am besten

  Alt 21. Nov 2008, 10:49
Zitat von DeddyH:
Für eine reine Gleichheitsabfrage müsste auch CompareMem() gehen.
oder auch if StringListe1.Text = StringListe2.Text then ShowMessage('Sindsichgleich') Wie groß sind die Listen und was musst Du in Bezug auf Unterschied wissen?
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:
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;
Ist die Reihenfolge von Bedeutung, dann ohne Sort.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#6

Re: Zwei Stringlisten miteinander vergleichen. Wie am besten

  Alt 21. Nov 2008, 10:50
Mal aus dem Hut:Gleich := CompareMem(PChar(sl1.Text),PChar(sl2.Text),Length(sl1.Text));
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#7

Re: Zwei Stringlisten miteinander vergleichen. Wie am besten

  Alt 21. Nov 2008, 10:52
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 ?
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#8

Re: Zwei Stringlisten miteinander vergleichen. Wie am besten

  Alt 21. Nov 2008, 10:56
neeee

// edit: oder doch?! erst beide sortieren, dann CompareMem()
Ralph
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#9

Re: Zwei Stringlisten miteinander vergleichen. Wie am besten

  Alt 21. Nov 2008, 10:58
Zitat von DeddyH:
Mal aus dem Hut:Gleich := CompareMem(PChar(sl1.Text),PChar(sl2.Text),Length(sl1.Text));
Was ist, wenn die Zahl der Zeilen übereinstimmt, aber nicht Length(sl1.Text) und Length(sl2.Text)?
Sollte dann wohl vorher geprüft werden.

Also:
Delphi-Quellcode:
If sl1.Count <> sl2.Count then Exit;
If Length(sl1.Text) <> Length(sl2.Text) then Exit;
If sl1.Text <> sl2.Text Then Exit;
und dann in 'ner Schleife oder wirklich per MD5.

Wenn es um sowas wie in Deinem Beispiel geht, dann
Delphi-Quellcode:
sl1.Sort;
sl2.Sort;
if sl1.Text <> sl2.Text then // sind unterschiedlich
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#10

Re: Zwei Stringlisten miteinander vergleichen. Wie am besten

  Alt 21. Nov 2008, 11:00
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 von naphets:
Was ist, wenn die Zahl der Zeilen übereinstimmt, aber nicht Length(sl1.Text) und Length(sl2.Text)?
In dem Fall erübrigt sich ein weiterer Vergleich, oder? Ich war davon ausgegangen, dass das bereits abgeprüft wurde. [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz