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