![]() |
Such Algorithmus(zweier Identischer Strings)
:wiejetzt: Ich habe eine Listbox mit x Items. Nun will ich alle items (mit gleichem string) löschen... :wiejetzt:
Mein Code:
Delphi-Quellcode:
Der Compiler löscht zwar einen doppelten wert, jedoch müsste ich ein paar mal auf den Button drücken, damit er alle doppelten, dreifachen... Strings korrket löscht. Zudem bekomme ich immer eine Fehlermeldung, das der listenindex überschritten wird.
procedure TForm2.SpeedButton7Click(Sender: TObject);
var I,A:integer; begin for I:=0 to ListBox2.Count-1 do for A:=1 to ListBox2.Count do begin if ListBox2.Items.Strings[i]=ListBox2.Items.Strings[a] then begin ListBox2.items.Delete(ListBox2.ItemIndex); end; end; end; Diesmal würde mir auch ein link weiterhelfen, habe nämlich mal wieder nichts gefunden... ( :idea: Wissen ist zu wissen wo es steht... :idea: )->Also bin ich doof... :gruebel: |
Re: Such Algorithmus(zweier Identischer Strings)
Code:
Warum läufst du beim 2. von 1 bis Count? :)
for I:=0 to ListBox2.Count-1 do
for A:=1 to ListBox2.Count do I bis count-1 |
Re: Such Algorithmus(zweier Identischer Strings)
weil er ansonsten ja immer den ersten wert löscht! weil der erste wert in der listbox natürlich der wert der ersten list box ist.also löscht er die ganze tabelle, bzw. immer den ersten wert...verstehst du? also
ich habe definiert wenn a=i ist , dann lösche a Also folgt, wenn ich bei beiden schleifen mit dem gleichen index anfange, löscht er immer alles!! hoffe ich habe es verständlich ausgedrückt.. |
Re: Such Algorithmus(zweier Identischer Strings)
so läßt man schon keine doppelten Einträge zu
Delphi-Quellcode:
TStringList(Listbox.Items).Duplicates := dupIgnore; |
Re: Such Algorithmus(zweier Identischer Strings)
Zitat:
|
Re: Such Algorithmus(zweier Identischer Strings)
@kroko
Zitat:
Zitat:
|
Re: Such Algorithmus(zweier Identischer Strings)
Zitat:
|
Re: Such Algorithmus(zweier Identischer Strings)
Zitat:
Jetzt beginnt die Schleife. Delphi geht immer von Count=10 aus. Jetzt löscht Du aus der ListBox aber 3 Einträge. Was meinst Du, was passiert, wenn Delphi jetzt an Position 8 ankommt? Da ist nix mehr, weil Du ja 3 weggelöscht hast, Delphi aber noch von Count = 10 ausgeht... |
Re: Such Algorithmus(zweier Identischer Strings)
Liste der Anhänge anzeigen (Anzahl: 1)
@ kroko
ich hab deinen code beim formcreate geschrieben, aber dennoch schreibt er mir die doppleten einträge in die listbox. ich kann mir das doch auch net erklären... @ catbytes nunja, wie soll ich das denn deiner meinung nach bewerkstelligen? Das ist doch nicht das eigentliche problem oder? mit EOF vielleicht? (if Eof then exit??); ich habe mal nen screenshot zur besseren dokumentation bereitgestellt. die erste listbox ist "undbehandelt" (ohne meinen algorithmus) und die rechte listbox ist das resultat... |
Re: Such Algorithmus(zweier Identischer Strings)
Gegeben ist eine Listbox mit:
a a a b b b
Delphi-Quellcode:
Ergebnis:
procedure TForm1.Button1Click(Sender: TObject);
var Liste: TStringList; begin Liste := TStringList.Create; Liste.Clear; Liste.Sorted := true; Liste.Duplicates := dupIgnore; Liste.AddStrings(ListBox1.Items); ListBox1.Clear; ListBox1.Items := Liste; Liste.Free; end; a b |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:35 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