Einzelnen Beitrag anzeigen

IceBube

Registriert seit: 9. Jul 2008
177 Beiträge
 
#12

AW: Bestimmte Zeile via TStringList löschen

  Alt 5. Jan 2012, 20:49
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
  Mit Zitat antworten Zitat