![]() |
TStringlist wird falsch gespeichert
Hallo Leute,
Ich habe mal wieder ein Problem, aber erstmal zu meinem Programm bzw. den Teilen, die bei meinem Problem eine Rolle spielen. Und zwar habe ich: Eine TListBox Eine TStringList Eine .txt Datei Beim öffnen des Programms sollen alle Inhalte der Textdatei erst in eine TStringlist und von da aus in die ListBox kopiert werden. Soweit klappt das auch, in der ListBox ist ein Eintrag. Beim Beenden des Programms sollen alle Einträge der ListBox wieder in die Datei geschrieben werden (überschreiben). Ich weiß nicht, woran das liegt allerdings habe ich nach dem 3. Programmstart auf einmal 2x den Eintrag in der Box, ohne etwas zu tun.
Delphi-Quellcode:
Die Datei wird beim schließen auch gelöscht und neu erstellt, aber trotzdem werden 2 Einträge gespeichert!
procedure Tmainwindow.FormCreate(Sender: TObject);
begin playliste:=TStringList.Create; playliste.LoadFromFile('videoliste.txt'); playlist.Items.AddStrings(playliste); end; procedure Tmainwindow.FormClose(Sender: TObject; var Action: TCloseAction); begin playliste.AddStrings(playlist.Items); deletefile('videoliste.txt'); // Eingebaut, damit die Datei auch sicher überschrieben wird. playliste.SaveToFile('videoliste.txt'); end; |
Re: TStringlist wird falsch gespeichert
Mach mal im Close vorher noch ein playliste.Clear; rein. Ich vermute, dass da noch was drinsteht, bevor du per AddStrings etwas hinzufügst.
Edit: Das DeleteFile ist gar nicht nötig, das SaveToFile überschreibt die alte Datei sowieso. |
Re: TStringlist wird falsch gespeichert
Du kannst Dir doch komplett den Umweg über die Stringliste sparen, und das 'DeleteFile' auch.
Da MyListBox.Items ein TStrings-Objekt ist, kannst Du direkt dessen LoadFromFile/SaveToFile-Methoden verwenden. |
Re: TStringlist wird falsch gespeichert
Danke, hat so funktioniert (sowohl mit Clear als auch ganz ohne StringList).
Allerdings hab ich jetzt das nächste Problem. Und zwar möchte ich beim Laden in die Playliste prüfen, ob der Eintrag schon vorhanden ist.
Delphi-Quellcode:
Wenn in der Playliste schon ein Eintrag vorhanden ist und ich den selben nochmal hinzufügen möchte, kommt die Meldung.
for playlistcheck := 0 to playlist.Count -1 do
if opendialog.Filename<>playlist.Items[vidname] then begin playlist.Items.AddStrings(opendialog.Files); end else showmessage('Schon vorhanden!'); Wenn aber gar kein Eintrag vorhanden ist, passiert gar nichts. Woran liegt das schon wieder? |
Re: TStringlist wird falsch gespeichert
mach bitte für die neue Frage ein neues Thema auf. :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz