Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TStringlist wird falsch gespeichert (https://www.delphipraxis.net/144629-tstringlist-wird-falsch-gespeichert.html)

Jiro 12. Dez 2009 15:18


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:
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;
Die Datei wird beim schließen auch gelöscht und neu erstellt, aber trotzdem werden 2 Einträge gespeichert!

patti 12. Dez 2009 15:25

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.

alzaimar 12. Dez 2009 15:27

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.

Jiro 12. Dez 2009 15:33

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:
     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 in der Playliste schon ein Eintrag vorhanden ist und ich den selben nochmal hinzufügen möchte, kommt die Meldung.
Wenn aber gar kein Eintrag vorhanden ist, passiert gar nichts. Woran liegt das schon wieder?

SirThornberry 12. Dez 2009 16:23

Re: TStringlist wird falsch gespeichert
 
mach bitte für die neue Frage ein neues Thema auf. :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:21 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz