Delphi-PRAXiS

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

eleonora 9. Mai 2003 09:33


Zeile löschen
 
Ok, ich gebs jetzt auf!

Nachdem ich gestern geschrieben habe, das ich etwas gefunden habe um eine bestimmte Zeile in einer Memobox zu löschen! Schreibe ich heute, ich habe mich getäuscht! :(

Ich wäre schon längst fertig mit dem Thema, wenn die Zeile bei jedem Neustart an der gleichen Stelle wieder auftreten würde, allerdings ist sie mal in Zeile 20, dann wieder in 30 usw.

Zu erst habe ich diesen Code benutzt:
Code:
Memo1.Lines.Delete(ZeilenNr.);
Das hat ja auch super funktioniert, bis ich herausfand, das sich die ZeilenNr. immer ändert.

Heute versuche ich es schon die ganze Zeit mit pos um die Position herauszufinden. Das mach ich dann so:
Code:
posi := Pos('suchende Zeile', memo1.lines.Strings[i]);
Um diese Zeile dann zu löschen versuchte ich es mit:
Code:
Memo1.Lines.Delete(posi);
Das funktioniert allerdings auch nicht. Er löscht mir lauter andere Zeilen nur nicht die, die er eigentlich löschen sollte!
Im Forum hab ich schon nachgeschaut und in der Hilfe auch, allerdings funktioniert irgendwie gar nichts bei mir!

Weiss jemand Rat :?:

Sorry für den Roman, aber ich hoffe irgend jemand kann mir helfen, sonst habe ich bald keine Haare mehr auf dem Kopf!

Danke schon mal!

Eleonora

Hansa 9. Mai 2003 12:25

hier steht genügend 8) 8) :

http://www.delphi-forum.de/viewtopic...ghlight=#61562

tja mit den Zeilennummern kann man schnell durcheinander geraten, deshalb nicht mit festen arbeiten und ein zweites Memo nehmen. Das ist die sauberste Methode.

mjenke 9. Mai 2003 13:09

Hi, eleonora!

Das Problem mit dem Code

Code:
posi := Pos('suchende Zeile', memo1.lines.Strings[i]);
Memo1.Lines.Delete(posi);
liegt einfach darin, dass die Funktion Pos Dir die erste Position innerhalb der Zeile zurückliefert, aber der Dein Suchstring auftaucht.
Als Beispiel

Code:
Pos('suchen','Dies ist zu durchsuchen');
liefert eine 18, weil "suchen" ab Position 18 in diesem String steht. Du hast die Position allerdings als Zeilennummer verwendet und würdest in diesem Fall Zeile 18 in Deinem Memofeld löschen...

Bau die Abfrage ein wenig um, z. B.:

Code:
for counter := 0 to Memo1.Lines.Count - 1 do begin
  if Pos('zu suchen',Memo1.Lines.Strings[counter]) <> 0 then begin
    Memo1.Lines.Delete(counter);
    exit;
  end;
end;
Dies sollte Dir das erste Vorkommen der gesuchten Zeile aus dem Memo-Feld löschen, denn Du prüfst in der If-Zeile nur, ob der zu suchende Eintrag überhaupt in der Zeile vorkommt.

Oder, wenn Du nach der kompletten Zeile suchen willst, kannst Du die If-Abfrage auch so stellen:

Code:
if Suchstring = Memo1.Lines.Strings[counter] then begin
:D
Matthias


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