Könnt ihr nicht einfach die Lösung sagen? Versteh nicht was das bringen soll, helfen tut ihm das sicher nicht!
Natürlich nicht mit List.Free, dadurch löscht du komplett die Liste!
Dein Problem ist eigentlich ganz einfach, so wie du es jetzt machst verschiebt sich der Index dadurch dass du eine Zeile löscht und daher erscheint diese Fehlermeldung!
Lösung ist, du gehst die Liste von Oben nach Unten durch und löscht die Zeile, bzw. du suchst die Zeile und löscht sie (ohne Schleife)
Schleife:
Delphi-Quellcode:
List:=TStringList.create;
List.LoadFromFile('C:\Users\Florian\Desktop\Delphidateien\Vokabeln-Auslesen\unsicherevoklat.txt');
for i3:= num-1 DOWNto 0 do begin
ReadLn(td3,s2);
ReadLn(td4,s3);
abfrage2:=inputbox('Wiederholung',s2,'');
if (uppercase(abfrage2)=uppercase(s3)) then begin
showmessage('Richtig!');
list.Delete(i3);
list.savetofile('C:\Users\Florian\Desktop\Delphidateien\Vokabeln-Auslesen\unsicherevoklat.txt');
list.Free; //Hier
end;
oder (in dem Fall besser!) ohne Schleife:
Delphi-Quellcode:
List := TstringList.create();
List.LoadFromFile(FileName);
....
if ( Richtig ) then
begin
List.Delete( List.IndexOF(Vokabel) );
List.SaveToFile(FileName);
//Hier
List.Free;
end;
lg