Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi String suchen und Zeile löschen? (https://www.delphipraxis.net/50349-string-suchen-und-zeile-loeschen.html)

smart 24. Jul 2005 10:09


String suchen und Zeile löschen?
 
Ich möchte ein TMemo nach einem String durchsuchen. Wenn der String gefunden wurde, sollt die Zeile in der der String vorkommt gelöscht werden. Wie kann man im TMemo eine ganze Zeile löschen?
Delphi-Quellcode:
If Pos('123456', Memo1.Text) <> 0 Then Zeile_löschen...;

malo 24. Jul 2005 10:15

Re: String suchen und Zeile löschen?
 
Mir fällt grade nur der Umweg ein, jede Zeile des Memos einzeln zu durchsuchen. Also etwa so:

Delphi-Quellcode:
for i := 1 to Memo1.Lines.Count - 1 do // mit der Nummerierung hab ich es nicht so, da müsste man nochmal genauer schauen
  begin
    If Pos('123456', Memo1.Lines[i]) <> 0 Then Memo1.Lines[i] := '';
  end;
//edit: Abschließender Delphi-Tag eingefügt :oops:

//Edit2: Code nochmal überprüft, und eine Stelle korrigiert

Khabarakh 24. Jul 2005 10:34

Re: String suchen und Zeile löschen?
 
Zitat:

Zitat von malo
Mir fällt grade nur der Umweg ein, jede Zeile des Memos einzeln zu durchsuchen. Also etwa so:

Delphi-Quellcode:
for i := 1 to Memo1.Lines.Count - 1 do // mit der Nummerierung hab ich es nicht so, da müsste man nochmal genauer schauen
  begin
    If Pos('123456', Memo1.Lines[i]) <> 0 Then Memo1.Lines[i] := '';
  end;
//edit: Abschließender Delphi-Tag eingefügt :oops:

//Edit2: Code nochmal überprüft, und eine Stelle korrigiert

Dann hast du aber eine Leerzeile, nimm besser TStringList.Delete:
Delphi-Quellcode:
for i := Memo1.Lines.Count - 1 downto 0 do
  if Pos('123456', Memo1.Lines[i]) <> 0 then
    Memo1.Lines.Delete(i);

smart 24. Jul 2005 10:51

Re: String suchen und Zeile löschen?
 
Zitat:

Zitat von Khabarakh
Dann hast du aber eine Leerzeile, nimm besser TStringList.Delete:
Delphi-Quellcode:
for i := Memo1.Lines.Count - 1 downto 0 do
  if Pos('123456', Memo1.Lines[i]) <> 0 then
    Memo1.Lines.Delete(i);

Ja, dass ist die beste Lösung. Habt vielen Dank für die Antworten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz