Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Doppelte wörter aus memo Löschen (https://www.delphipraxis.net/141776-doppelte-woerter-aus-memo-loeschen.html)

RuSsAk 15. Okt 2009 21:34


Doppelte wörter aus memo Löschen
 
hi leute
ich brauche mal wieder hilf
hätte vllt jemand für mich ein code zur seite der doppelte wörter aus memo1 löscht?

also z.b
ich
bla
ich
ich
das
ich

das "ich" soll gelöscht werden

wäre dankbar für eure hilfe


mfg,

fkerber 15. Okt 2009 21:36

Re: Doppelte wörter aus memo Löschen
 
Hi!

Also steht in jeder Zeile nur ein Wort?


Grüße, Frederic

RuSsAk 15. Okt 2009 21:38

Re: Doppelte wörter aus memo Löschen
 
Zitat:

Zitat von fkerber
Hi!

Also steht in jeder Zeile nur ein Wort?


Grüße, Frederic


hi fkerber danke für deine schnelle antwort :)


achso sry das ich das nich angeben habe wusste nich das es so wichtig is aber ja pro zeile ein wort

Jens Hartmann 15. Okt 2009 21:42

Re: Doppelte wörter aus memo Löschen
 
Hallo,

such mal nach POS, CompareStr, CompareText etc.

Memo.Lines


Vieleicht hilft dir das ja.

MFG

Jens

Jens Hartmann 15. Okt 2009 21:45

Re: Doppelte wörter aus memo Löschen
 
Achso,

und schau mal hier...

Doppelte Zeilen in Memo löschen

MFG

jens

RuSsAk 15. Okt 2009 21:46

Re: Doppelte wörter aus memo Löschen
 
Zitat:

Zitat von Jens Hartmann
Hallo,

such mal nach POS, CompareStr, CompareText etc.

Memo.Lines


Vieleicht hilft dir das ja.

MFG

Jens


ich habe hier was gefunden könntest du mir vllt helfen das so zu machen das es aufs memo zugreift?
`
Delphi-Quellcode:
function CompareText(const S1, S2: string): integer;
var s1,s2 : string;
        i : integer;

s1:='Delphi';
s2:='Programming';
i:= CompareText(s1,s2);
//i<0 because D is less than P in ascii order.

Jens Hartmann 15. Okt 2009 22:02

Re: Doppelte wörter aus memo Löschen
 
In #5 steht doch schon eine fertige Lösung.

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;

procedure TMainForm.Button1Click(Sender: TObject);
begin
  Memo1.Lines.BeginUpdate;
  KillDuplicates(Memo1.Lines);
  Memo1.Lines.EndUpdate;
end;
MFG

Jens

RuSsAk 15. Okt 2009 22:18

Re: Doppelte wörter aus memo Löschen
 
Zitat:

Zitat von Jens Hartmann
In #5 steht doch schon eine fertige Lösung.

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;

procedure TMainForm.Button1Click(Sender: TObject);
begin
  Memo1.Lines.BeginUpdate;
  KillDuplicates(Memo1.Lines);
  Memo1.Lines.EndUpdate;
end;
MFG

Jens

ok funktioniert alles top vielen dank :) :dp:


schön abend noch :cheers:

Lannes 15. Okt 2009 22:33

Re: Doppelte wörter aus memo Löschen
 
Hallo,

die Möglichkeit finde ich auch immer schön:
Delphi-Quellcode:
for z := Pred(Memo.Lines.Count) downto 1 do
  if Memo.Lines.IndexOf(Memo.Lines[z]) <> z then
    Memo.Lines.Delete(z);

himitsu 15. Okt 2009 22:39

Re: Doppelte wörter aus memo Löschen
 
ich würde das .BeginUpdate und .EndUpdate noch mit in KillDuplicates reinverschieben
und es könnte nicht schaden, wenn man dieses dann auch noch mit Try-Finally absichert.


und warum gibt es nicht sowas wie Self für das With-Do?
dann könnte man es ohne Variabe und inplace gleich so machen
Delphi-Quellcode:
with TStringList.Create do
  try
    Duplicates := dupIgnore;
    Assign(Memo1.Lines);
    Memo1.Lines.Assign({self});
  finally
    Free;
  end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:02 Uhr.
Seite 1 von 2  1 2      

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