Danke erstmal für eure Antworten!
maxk hat folgendes geschrieben: |
Was willst du den vergleichen? |
freedy hat folgendes geschrieben: |
Leg dir doch einfach eine Kopie der Items an und schreib einen Algorithmus, der aus der Kopie alle bereits verglichenen entfernt. Dadurch sollte sich deine zu vergleichende Menge verkleinern. Wäre vielleicht schon mal ein Geschwindigkeitsvorteil.
Trotzdem habe ich dein Problem noch nicht ganz verstanden. |
@maxk: Jedes Items mit allen anderen, d.h., bei maximal 9999 Items muss ich JEDES der 9999 Items genau 9998x vergleichen - 9998x deswegen, weil das Items selbst wegfällt, da es sich sonst mit sich selbst vergleicht. Das dauert! Ich habe zwar eine ProgressBar und Labels, die den Fortschritt anzeigen, aber es dauert eben!
@freedy: Ich kann alle bereits verglichenen Items nicht entfernen, da ich sie für die nachfolgenden Vergleiche noch brauche - bei jedem Item beginnt der Vergleich bei Items[0], durchläuft dann alle weiteren Items, überspringt sich selbst und endet bei Items[Items.Count-1].
Erschwerend kommt noch hinzu, dass in Wirklichkeit jeweils Items von 2 ListBox's verglichen werden müssen: ListBox2 und ListBox3, beide haben exakt die gleiche Anzahl an Items. Der Code steckt voller Anweisungen, die speziell für das Programm benötigt werden, würde also eher verwirren als erklären! Zum besseren Verständnis hier mal das Prinzip:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| _I := 0; I := 0; ListBox7.Clear;
while _I < MaxCount do for I := 0 to MaxCount do begin if I <> _I then if (ListBox2.Items[_I] = ListBox2.Items[I]) and (ListBox3.Items[_I] = ListBox3.Items[I]) then begin ListBox7.Items.Add(IntToStr(I+1)+' '+ListBox2.Items[I]); end; end; |
Klappt ja bestens, aber ist eben so langsam. Geht das nicht schneller?
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!