AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Such Algorithmus(zweier Identischer Strings)
Thema durchsuchen
Ansicht
Themen-Optionen

Such Algorithmus(zweier Identischer Strings)

Ein Thema von Pitch-Bull · begonnen am 17. Jun 2005 · letzter Beitrag vom 17. Jun 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Pitch-Bull
Pitch-Bull

Registriert seit: 7. Jun 2005
Ort: Stendal
90 Beiträge
 
Delphi 6 Enterprise
 
#1

Such Algorithmus(zweier Identischer Strings)

  Alt 17. Jun 2005, 09:56
Ich habe eine Listbox mit x Items. Nun will ich alle items (mit gleichem string) löschen...

Mein Code:
Delphi-Quellcode:
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;
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.

Diesmal würde mir auch ein link weiterhelfen, habe nämlich mal wieder nichts gefunden...
( Wissen ist zu wissen wo es steht... )->Also bin ich doof...
Entropie ist keine Glücksgarantie
  Mit Zitat antworten Zitat
Benutzerbild von ste_ett
ste_ett

Registriert seit: 10. Sep 2004
Ort: Dülmen
464 Beiträge
 
Delphi 7 Professional
 
#2

Re: Such Algorithmus(zweier Identischer Strings)

  Alt 17. Jun 2005, 10:02
Code:
for I:=0 to ListBox2.Count-1 do
  for A:=1 to ListBox2.Count do
Warum läufst du beim 2. von 1 bis Count?
I bis count-1
Stefan
"Geht nicht!" ist keine Fehlerbeschreibung und "Hab ich schon versucht!" keine Antwort!

Hey, it compiles! Ship it!
  Mit Zitat antworten Zitat
Benutzerbild von Pitch-Bull
Pitch-Bull

Registriert seit: 7. Jun 2005
Ort: Stendal
90 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: Such Algorithmus(zweier Identischer Strings)

  Alt 17. Jun 2005, 10:06
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..
Entropie ist keine Glücksgarantie
  Mit Zitat antworten Zitat
Benutzerbild von Kroko1999
Kroko1999

Registriert seit: 21. Apr 2005
Ort: Spremberg
455 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Such Algorithmus(zweier Identischer Strings)

  Alt 17. Jun 2005, 10:07
so läßt man schon keine doppelten Einträge zu
Delphi-Quellcode:
  
TStringList(Listbox.Items).Duplicates := dupIgnore;
Da sprach der Stumme zum Blinden: "Du wirst sehen ..."
oder
Wer lesen kann, ist klar im Vorteil!
  Mit Zitat antworten Zitat
Benutzerbild von Catbytes
Catbytes

Registriert seit: 7. Sep 2002
Ort: Heckendalheim
353 Beiträge
 
Delphi XE5 Enterprise
 
#5

Re: Such Algorithmus(zweier Identischer Strings)

  Alt 17. Jun 2005, 10:09
Zitat von Pitch-Bull:
Mein Code:
for A:=1 to ListBox2.Count do
[...]
ListBox2.items.Delete(ListBox2.ItemIndex);
Machts *klick*?
Catbytes
  Mit Zitat antworten Zitat
Benutzerbild von Pitch-Bull
Pitch-Bull

Registriert seit: 7. Jun 2005
Ort: Stendal
90 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: Such Algorithmus(zweier Identischer Strings)

  Alt 17. Jun 2005, 10:14
@kroko
Zitat:
so läßt man schon keine doppelten Einträge zu
Quellcode: markieren
TStringList(Listbox.Items).Duplicates := dupIgnore;
damit funzt es leider nicht, weiß auch nicht warum...
Zitat:
Pitch-Bull hat folgendes geschrieben:
Mein Code:
for A:=1 to ListBox2.Count do
[...]
ListBox2.items.Delete(ListBox2.ItemIndex);
ne, es macht nicht klick!?! Also vielleicht versteh ich , was du mir damit sagen willst, aber ich denke, dass er je nur dann ein items löscht, wenn ListBox2.Items.Strings[i]=ListBox2.Items.Strings[a] ist...oder?
Entropie ist keine Glücksgarantie
  Mit Zitat antworten Zitat
Benutzerbild von Kroko1999
Kroko1999

Registriert seit: 21. Apr 2005
Ort: Spremberg
455 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Such Algorithmus(zweier Identischer Strings)

  Alt 17. Jun 2005, 10:16
Zitat von Pitch-Bull:
@kroko
Zitat:
so läßt man schon keine doppelten Einträge zu

TStringList(Listbox.Items).Duplicates := dupIgnore;
damit funzt es leider nicht, weiß auch nicht warum...
...
setzen bevor du die Listbox füllst und Sortierung an
Da sprach der Stumme zum Blinden: "Du wirst sehen ..."
oder
Wer lesen kann, ist klar im Vorteil!
  Mit Zitat antworten Zitat
Benutzerbild von Catbytes
Catbytes

Registriert seit: 7. Sep 2002
Ort: Heckendalheim
353 Beiträge
 
Delphi XE5 Enterprise
 
#8

Re: Such Algorithmus(zweier Identischer Strings)

  Alt 17. Jun 2005, 10:27
Zitat von Pitch-Bull:
ne, es macht nicht klick!?!
OK - Angenommen ListBox1.Items.Count wäre 10

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...
Catbytes
  Mit Zitat antworten Zitat
Benutzerbild von Pitch-Bull
Pitch-Bull

Registriert seit: 7. Jun 2005
Ort: Stendal
90 Beiträge
 
Delphi 6 Enterprise
 
#9

Re: Such Algorithmus(zweier Identischer Strings)

  Alt 17. Jun 2005, 10:29
@ 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...
Miniaturansicht angehängter Grafiken
listbox_128.jpg  
Entropie ist keine Glücksgarantie
  Mit Zitat antworten Zitat
Benutzerbild von Catbytes
Catbytes

Registriert seit: 7. Sep 2002
Ort: Heckendalheim
353 Beiträge
 
Delphi XE5 Enterprise
 
#10

Re: Such Algorithmus(zweier Identischer Strings)

  Alt 17. Jun 2005, 10:41
Gegeben ist eine Listbox mit:
a
a
a
b
b
b

Delphi-Quellcode:
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;
Ergebnis:
a
b
Catbytes
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:05 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