Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Listbox Einträge vergl., bei Doppelbelegung einen Löschen (https://www.delphipraxis.net/122096-listbox-eintraege-vergl-bei-doppelbelegung-einen-loeschen.html)

nahpets 9. Okt 2008 14:43

Re: Listbox Einträge vergl., bei Doppelbelegung einen Lösche
 
Zitat:

Zitat von Ginko
Aber wie ich sehe klappt es auch mit deiner 'for' Schleife nur werden hier auch nicht alle Werte abgefagt.

Welche Werte werden nicht abgefragt? Die Forschleife sorgt dafür, dass zuerst der letzte und der vorletzte Eintrag verglichen werden, dann der vorletzte mit dem vorvorletzten ... bis der erste und der nullte Eintrag miteinander verglichen werden. Hier sollte eigentlich nichts "übersprungen" werden.

DeddyH 9. Okt 2008 14:47

Re: Listbox Einträge vergl., bei Doppelbelegung einen Lösche
 
Ohne mich selbst loben zu wollen finde ich meine Methode am Einfachsten ;)

Ginko 9. Okt 2008 14:52

Re: Listbox Einträge vergl., bei Doppelbelegung einen Lösche
 
Ja das klappt aber es sollen auch der letzte mit dem ersten, der letzte mit dem zweiten usw verglichen
werden.

Also wenn jetzt zum Beispiel an Stelle 1 (0 0 0) steht und an Stelle 5 (0 0 0) dann soll die erste stelle gelöscht werden oder wenn nicht anders möglich die 5te.

taaktaak 9. Okt 2008 14:53

Re: Listbox Einträge vergl., bei Doppelbelegung einen Lösche
 
Zitat:

ich will die einträge einer Listbox an bestimmten stellen
vergleichen und bei Doppelbelegung einen rauslöschen
Diese Aufgabenstellung erscheint mir seltsam. Warum "an bestimmten Stellen"? Oder sollen ALLE Doubletten gelöscht werden?

Grundsätzlich wäre es auch (vielleicht) sinnvoller, die Doubletten gar nicht erst in die Listbox aufzunehmen. Also z.B. mit
Delphi-Quellcode:
with ListBox1.Items do
  if IndexOf(~~)<0 then Add(~~
zu gewährleisten dass keine doppelten Einträge hinein kommen.

DeddyH 9. Okt 2008 14:55

Re: Listbox Einträge vergl., bei Doppelbelegung einen Lösche
 
Das geht aber einfacher mit Sorted auf true und Duplicates auf dupIgnore.

[edit] Kommando zurück, das gilt nur für TStringlist. [/edit]

nahpets 9. Okt 2008 14:56

Re: Listbox Einträge vergl., bei Doppelbelegung einen Lösche
 
Hallo,
Zitat:

Zitat von DeddyH
Ohne mich selbst loben zu wollen finde ich meine Methode am Einfachsten ;)

okay, Du bekommst jetzt ein gaaaaaaanz dickes Lob :thumb: :thumb: :thumb: :thumb: :thumb:
Deine Methode berücksichtig bisher noch nicht, dass beim Vergleich nur das 5. ,7. und 9. Zeichen der Einträge berücksichtigt werden sollen. :(

nahpets 9. Okt 2008 14:59

Re: Listbox Einträge vergl., bei Doppelbelegung einen Lösche
 
Hallo,
Zitat:

Zitat von Ginko
Ja das klappt aber es sollen auch der letzte mit dem ersten, der letzte mit dem zweiten usw verglichen
werden.

Also wenn jetzt zum Beispiel an Stelle 1 (0 0 0) steht und an Stelle 5 (0 0 0) dann soll die erste stelle gelöscht werden oder wenn nicht anders möglich die 5te.

Also langsam scheint bei mir der Groschen zu fallen:

Du möchtest jeden Eintrag mit jedem Eintrag vergleichen und alle die löschen, bei denen die 5., 7. und 9. Stelle übereinstimmen. Hab' ich's jetzt verstanden :?:

DeddyH 9. Okt 2008 15:01

Re: Listbox Einträge vergl., bei Doppelbelegung einen Lösche
 
Unter "doppeltem Eintrag" verstehe ich aber etwas anderes :?

Ginko 9. Okt 2008 15:07

Re: Listbox Einträge vergl., bei Doppelbelegung einen Lösche
 
Ja genau also die Einträge sind nur an den bestimmten Stellen gleich.
also es sieht zB ein gleicher Eintrag so aus:
1) 0 1 1
4) 0 1 1
aber sollte es zu kompliziert sein werde ich es vielleicht erstmal versuchen es vor dem Eintrag abzufangen, wobei das sicher auch nicht viel einfacher geht.

bernau 9. Okt 2008 15:11

Re: Listbox Einträge vergl., bei Doppelbelegung einen Lösche
 
Zitat:

Zitat von DeddyH
Das geht aber einfacher mit Sorted auf true und Duplicates auf dupIgnore.

[edit] Kommando zurück, das gilt nur für TStringlist. [/edit]

Dann sollte doch folgendes gehen

Delphi-Quellcode:
var
  sl:TStriglist;
begin
  sl:=TStriglist.create;
  sl.duplicates:=dupIgnore;
  sl.assign(sllistbox0.Items);
  sllistbox0.Items.assign(sl);
  sl.free;
end;

Edit: Bei mir auch komando zurück. Habe den ersten Post zu schnell überflogen. ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:14 Uhr.
Seite 2 von 3     12 3      

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