![]() |
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:
Das hat ja auch super funktioniert, bis ich herausfand, das sich die ZeilenNr. immer ändert.
Memo1.Lines.Delete(ZeilenNr.);
Heute versuche ich es schon die ganze Zeit mit pos um die Position herauszufinden. Das mach ich dann so:
Code:
Um diese Zeile dann zu löschen versuchte ich es mit:
posi := Pos('suchende Zeile', memo1.lines.Strings[i]);
Code:
Das funktioniert allerdings auch nicht. Er löscht mir lauter andere Zeilen nur nicht die, die er eigentlich löschen sollte!
Memo1.Lines.Delete(posi);
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 |
hier steht genügend 8) 8) :
![]() tja mit den Zeilennummern kann man schnell durcheinander geraten, deshalb nicht mit festen arbeiten und ein zweites Memo nehmen. Das ist die sauberste Methode. |
Hi, eleonora!
Das Problem mit dem Code
Code:
liegt einfach darin, dass die Funktion Pos Dir die erste Position innerhalb der Zeile zurückliefert, aber der Dein Suchstring auftaucht.
posi := Pos('suchende Zeile', memo1.lines.Strings[i]);
Memo1.Lines.Delete(posi); Als Beispiel
Code:
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...
Pos('suchen','Dies ist zu durchsuchen');
Bau die Abfrage ein wenig um, z. B.:
Code:
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.
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; Oder, wenn Du nach der kompletten Zeile suchen willst, kannst Du die If-Abfrage auch so stellen:
Code:
:D
if Suchstring = Memo1.Lines.Strings[counter] then begin
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