AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Doppelte Zeilen aus einem TMemo löschen
Thema durchsuchen
Ansicht
Themen-Optionen

Doppelte Zeilen aus einem TMemo löschen

Ein Thema von Maxisoft2 · begonnen am 3. Feb 2008 · letzter Beitrag vom 3. Feb 2008
Antwort Antwort
Maxisoft2

Registriert seit: 8. Nov 2007
20 Beiträge
 
#1

Doppelte Zeilen aus einem TMemo löschen

  Alt 3. Feb 2008, 11:37
Hallo liebe Delphiler,

Kaum ist der erste Teil meiner Frage gelöst, taucht ein weiterer auf -
Ich möchte in meinem Memo, dass pro Zeile mit einer ID gefüllt ist,
die doppelten / dreifachen / zehnfachen gleichen Zeilen entfernen -

z.B.:
id=be1aaeaa40859fa5
id=f88d479ad888c8a0
id=f88d479ad888c8a0
id=b0498dcaf0b70f04
id=b0498dcaf0b70f04
id=a143e956ca7ad9ac
id=a143e956ca7ad9ac
id=be1aaeaa40859fa5
id=235b0e8cd726ff5f
id=a35f1c800d72558f
id=e36734d9530e6bc0
id=e36734d9530e6bc0
id=d2a331de7c42825f
id=d2a331de7c42825f
id=5076c8e1d3141bde

Was - so glaube ich - irgendwie mit einer Schleife möglich sein sollte,
ich bin allerdings komplett planlos, mit welchen Kommandos ich das bewerkstelligen
kann. Habe leider auch keine Beispiele bei Google gefunden, aber es sollte
ja schon eine Delphi-interne Möglichkheit geben, doppelte Strings zu vergleichen und
dann solange zu löschen, bis nurnoch einer da ist!?

Würde mich riesig über Hilfe freuen,
- M.S.
  Mit Zitat antworten Zitat
Blackheart

Registriert seit: 4. Mai 2005
846 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Doppelte Zeilen aus einem TMemo löschen

  Alt 3. Feb 2008, 11:48
Delete, IndexOf
Blackheart
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.757 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Doppelte Zeilen aus einem TMemo löschen

  Alt 3. Feb 2008, 13:32
Hallo,

so könnte es auch ohne Schleifen gehen:

Delphi-Quellcode:
var
  sl: TStringList;

sl := TStringlist.create;
sl.sorted := true;
sl.duplicates := dupIgnore;
sl.assign(Memo1.lines);
Memo1.lines.assign(sl);
sl.free;
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Doppelte Zeilen aus einem TMemo löschen

  Alt 3. Feb 2008, 14:11
Hallo,

hier noch ein In-Place-Ansatz:

Delphi-Quellcode:
procedure KillDuplicates(s: TStrings);
var
  iLow, iHigh: integer;
begin
  for iLow := 0 to s.Count - 2 do
    for iHigh := Pred(s.Count) downto Succ(iLow) do
      if s[iLow] = s[iHigh] then
        s.Delete(iHigh);
end;
Und wenn der Parameter immer "id" heißt, dann würde ich in AddToList() den Url-Präfix noch etwas erweitern:

Delphi-Quellcode:
const
  PFX = 'http://www.webseite.de/profile.php?id=';
Es werden dann nur die Codes eingetragen.

Freundliche Grüße
  Mit Zitat antworten Zitat
Maxisoft2

Registriert seit: 8. Nov 2007
20 Beiträge
 
#5

Re: Doppelte Zeilen aus einem TMemo löschen

  Alt 3. Feb 2008, 17:33
Hallo,

Vielen Dank für die zahlreichen Antworten,
sie haben mir alle weitergeholfen!

Marabu, mein Lebensretter!
Mit deinem Vorschlag läuft das Ganze am aller, aller schnellsten und Besten.
(Sind teilweise 900 Einträge, mit deinem Beispiel läuft das Ganze durch wie Butter!)
Du bist echt genial!

- Max
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Doppelte Zeilen aus einem TMemo löschen

  Alt 3. Feb 2008, 17:45
Max, du übertreibst schamlos.

Es geht noch schneller, falls du vergessen haben solltest, während der Ausführung von KillDuplicates() die Aktualisierung der Memo.Lines abzuschalten:

Delphi-Quellcode:
begin
  Memo.Lines.BeginUpdate;
  KillDuplicates(Memo.Lines);
  Memo.Lines.EndUpdate;
end;
Freundliche Grüße
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:59 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