Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Doppelte Werte aus Memo entfernen (https://www.delphipraxis.net/89567-doppelte-werte-aus-memo-entfernen.html)

Crazymodder 2. Apr 2007 15:11


Doppelte Werte aus Memo entfernen
 
Hallo alle zusammen. Ich habe in einer Memo mehrere Werte pro Zahl eine Zeile ich möchte nun gerne doppelte Werte aus der Memo löschen. Würde mich sehr freuen wenn mir jemand sagen könnte wie das geht.
Danke im Vorraus
Crazymodder

mkinzler 2. Apr 2007 15:17

Re: Doppelte Werte aus Memo entfernen
 
Durchgehen und Einträge vergleichen (.IndexOf())

Crazymodder 2. Apr 2007 16:09

Re: Doppelte Werte aus Memo entfernen
 
könnte das vllt jemand nochmal an einem beispiel zeigen. Es ist ja nicht nur eine Zahl die immer doppelt vorkommt sondern immer andere und unterschiedlich anzahl.
Danke würde mich sehr freuen.

mkinzler 2. Apr 2007 16:22

Re: Doppelte Werte aus Memo entfernen
 
Wie sehen die Einträge aus?

Crazymodder 2. Apr 2007 17:32

Re: Doppelte Werte aus Memo entfernen
 
Es sind zahlen meinetwegen so
1
5
7
9
1
10
5
7

Die doppelten also 1,5,7 müssten weg aber es können auch andere sein und ach mehr.

mkinzler 2. Apr 2007 17:49

Re: Doppelte Werte aus Memo entfernen
 
Delphi-Quellcode:
For i := Memo.Lines.Count -1 downto 2 do
    for j := i-1 downto 1 do
    begin
        if Memo.IndexOf( j) = Memo.IndexOf( i) then Memo.Lines.Delete(i);
    end;
getippt und nicht getestet

Crazymodder 2. Apr 2007 18:07

Re: Doppelte Werte aus Memo entfernen
 
Mh thx very nett funktioniert
Danke

Matze 2. Apr 2007 18:19

Re: Doppelte Werte aus Memo entfernen
 
Bei vielen Einträgen wäre es sicher schneller, wenn man den Memo-Text in eine StringList kopiert, darin die Filterung der Einträge vornimmt und in einem Rutsch zurück ins Memo kopiert, anstelle in jedem Schleifendurchgang direkt mit der VCl zu arbeiten. Bei wenigen Einträgen macht sich der Unterschied jedoch kaum bemerktbar, sind es relativ viele, dann hingegen schon.

Hawkeye219 2. Apr 2007 19:19

Re: Doppelte Werte aus Memo entfernen
 
Für Notfälle:

Delphi-Quellcode:
procedure RemoveDuplicates (aList: TStrings);
var
  i : Integer;
begin
  aList.BeginUpdate;
  try
    for i := aList.Count - 1 downto 1 do
      if (aList.IndexOf(aList[i]) < i) then
        aList.Delete (i);
  finally
    aList.EndUpdate;
  end;
end;
Gruß Hawkeye

Crazymodder 3. Apr 2007 09:53

Re: Doppelte Werte aus Memo entfernen
 
Super thx super nett für die Hilfe hgab es jetzt erst in StringList kopieren lassen und dann sortieren und zurück super nice thx very much.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:47 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