Guten Morgen.
Memo4.Lines.Strings[i] ist das gleiche wie Memo4.Lines[i]. In jedem Fall ist es eine property und kann nicht als Variable an die Prozedur Delete() übergeben werden - wie Julian dir schon geschrieben hat. Wenn du eine Position öfter verwendest, dann solltest du sie in einer Variablen zwischenspeichern und sie nicht ständig neu suchen lassen. Und wenn du deinen Code funktional gliederst, hast du mehr Spaß am Programmieren:
Delphi-Quellcode:
procedure ExtractUrls(s, urls: TStrings; prefix: String);
var
i, iStart, iStop: Integer;
line: String;
begin
for i := 0 to Pred(s.Count) do
begin
line := s[i];
iStart := Pos(prefix, line);
if iStart > 0 then
begin
iStop := PosEx(' ', line, iStart + Length(prefix));
if iStop = 0
then urls.Add(Copy(line, iStart, MaxInt))
else urls.Add(Copy(line, iStart, iStop - iStart));
end;
end;
end;
Verwenden kannst du diese Prozedur in deinem Fall so:
Delphi-Quellcode:
begin
ExtractUrls(Memo4.Lines, Memo3.Lines, 'http://lix.in/');
end;
Grüße vom marabu