Das Problem bei deinem Algorithmus ist das du zuoft IndexOfName verwendest, diese Methode durchsucht die Stringliste jedesmal von vorne!
Probier es mal so hier:
Delphi-Quellcode:
for i := 0 to LISTE2.Count-1 do
begin
for j := LISTE1.Count-1 downto 0 do begin
if AnsiUpperCase(LISTE2[i])=AnsiUpperCase(Copy(LISTE1[j], 1, Length(LISTE2[i]))) then begin
//schreibe zugehörigen WERT in andere Liste
LISTE1.Delete(j);
end;
end;
end;