AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zeile löschen

Ein Thema von eleonora · begonnen am 9. Mai 2003 · letzter Beitrag vom 9. Mai 2003
Antwort Antwort
eleonora

Registriert seit: 24. Jan 2003
80 Beiträge
 
#1

Zeile löschen

  Alt 9. Mai 2003, 09:33
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
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#2
  Alt 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.
Gruß
Hansa
  Mit Zitat antworten Zitat
mjenke

Registriert seit: 28. Mär 2003
Ort: Bonn
131 Beiträge
 
#3
  Alt 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

Matthias
Matthias Jenke
  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 01:53 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