AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

TStringlist aus Datei gelesen

Ein Thema von bluescreen25 · begonnen am 17. Dez 2005 · letzter Beitrag vom 18. Dez 2005
Antwort Antwort
bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#1

TStringlist aus Datei gelesen

  Alt 17. Dez 2005, 22:16
Hallo, ich habe ein Problem:

Ich speichere eine TStringliste mit Dateinamen inkl. Pfad in eine Playlist.lst ab.
Beim nächsten Programmstart lädt er die Strings wieder ein.

Jetzt möchte ich beim einladen der Liste feststellen, ob die hinterlegten Dateien noch existieren und wenn nicht, sollen diese aus der Liste gelöscht werden, den restlichen Dateien werden die Pfade gekappt und der sichtbaren Listbox zugeführt.

Kann da jemand helfen?
Delphi-Quellcode:
procedure Tmediaplayer_frm.FormActivate(Sender: TObject);
var i:integer;
begin
  if config_frm.playlist_load_select.Checked = true then
  begin
    if FileExists(ProgrammPfad + '\PlayList.lst')then
     begin
       PlayList.LoadFromFile(ProgrammPfad + '\PlayList.lst');
       For i:=0 to PlayList.Count-1 do
       //if FileExists(PlayList.Strings[i]) then
       //Playlist.Delete(i);

       //else
       
       PlayList_ListBox.Items.Add(ExtractFileName(PlayList[i]));
     end
  else
  end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#2

Re: TStringlist aus Datei gelesen

  Alt 17. Dez 2005, 22:37
Ich würde mal das vorschlagen:
Delphi-Quellcode:
       
       i:=0
       while i < PlayList.Count do
         if FileExists(PlayList.Strings[i]) then begin
           PlayList_ListBox.Items.Add(ExtractFileName(PlayList[i]));
           inc(i)
         end else
           PlayList.Delete(i)
In der For-Schleife Items aus der Liste zu löschen ist sehr ungut, da das Schleifenende von der ursprünglichen Anzahl der Einträge bestimmt ist.
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: TStringlist aus Datei gelesen

  Alt 17. Dez 2005, 22:54
Danke, das funktioniert prima. Hmm wäre da nicht drauf gekommen.
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.041 Beiträge
 
Delphi XE2 Professional
 
#4

Re: TStringlist aus Datei gelesen

  Alt 18. Dez 2005, 00:51
Du kannst auch mit For ... arbeiten, mußt dann aber rückwärts zählen, also
for i:=PlayList.Count-1 downto 0 do
.....
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: TStringlist aus Datei gelesen

  Alt 18. Dez 2005, 09:46
Hallo bluescreen25,

du könntest es auch noch ganz anders angehen. Die angehängte Demo zeigt dir, wie du deine Daten nur einmal verwaltest und doch die Darstellung deiner Wahl erhalten kannst. Du musst dazu nur die ListBox in den virtuellen Modus versetzen (ListBox.Style = lbVirtual).

Grüße vom marabu
Angehängte Dateien
Dateityp: zip lb-virtual_126.zip (2,6 KB, 84x aufgerufen)
  Mit Zitat antworten Zitat
bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: TStringlist aus Datei gelesen

  Alt 18. Dez 2005, 11:39
Zitat von Amateurprofi:
Du kannst auch mit For ... arbeiten, mußt dann aber rückwärts zählen, also
for i:=PlayList.Count-1 downto 0 do
.....
kannst du mir etwas näher erklren, warum das so auch gehen kann? Kann das irgendwie nicht nachvollziehen.
  Mit Zitat antworten Zitat
Benutzerbild von dahead
dahead

Registriert seit: 16. Mai 2005
620 Beiträge
 
#7

Re: TStringlist aus Datei gelesen

  Alt 18. Dez 2005, 11:48
Zitat von bluescreen25:
Zitat von Amateurprofi:
Du kannst auch mit For ... arbeiten, mußt dann aber rückwärts zählen, also
for i:=PlayList.Count-1 downto 0 do
.....
kannst du mir etwas näher erklren, warum das so auch gehen kann? Kann das irgendwie nicht nachvollziehen.
das problem war doch, dass du mit for i := 0 to Länge vorne anfängst, einen einträg löscht, und dann gar nicht bis Länge kommen kannst.

wenn du aber mit for I := Länge downto 0 arbeitest und dann bspw. der ersten (also in diesem fall den letzten Eintrag = Länge) löscht, hast du kein problem, da der nächste ja einfach Länge - 1 ist.

Hoffe das war einigermaßen verständlich.
  Mit Zitat antworten Zitat
bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: TStringlist aus Datei gelesen

  Alt 18. Dez 2005, 15:11
ja auf jeden Fall, vielen Dank !
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:37 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