Weil du nur in der ersten Zeile nach nem String suchst, den es da evtl. gar nicht gibt und anschliessend das Memo mit dem Ergebnis (LeerString) überschreibst, was dazu führt, dass du gar nicht weitersuchen kannst.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var a, i: integer;
s: string;
lst: TStringList;
begin
lst := TStringList.Create;
for i := 0 to Memo1.Lines.Count -1 do
begin
s := Memo1.Lines[i];
a:=pos('<harf"', s)+5;
delete(s, 1, a);
a:=pos('"', s);
lst.Add( copy(s, 1, a-1) );
end;
Memo1.Lines.Text:=lst.Text;
lst.free;
end;