Einzelnen Beitrag anzeigen

stevewilson

Registriert seit: 21. Okt 2006
16 Beiträge
 
Delphi 7 Professional
 
#1

CD-Liste in Datei schreiben

  Alt 28. Okt 2006, 12:41
Hallo,

habe wieder ein Problem beim entwickeln meiner Musik-CD-Verwaltung.
Ich will meine CDs, die folgend strukturiert sind...
Delphi-Quellcode:
type
  TCd = class(TObject)
    interpreter : string;
    albumTitle : string;
    genre : string;
    songTitles : TStringList;
  private
    procedure setValues(interpreter, albumTitle, genre : string);
...und in einer Objectlist, die sich "cdList" nennt gespeichert werden, einzeln in eine Datei schreiben:

Delphi-Quellcode:
//speichert CD-Liste in Datei
procedure TForm1.saveCdListToFile(fileName : TFileName);
var
  f : file of TCd;
  i : integer;
  wCd : TCd;
begin
  assignFile(f, fileName);
  reWrite(f);
  for i := 0 to cdList.count - 1 do
  begin
    //kein create notwendig!!!
    wCd := TCd(cdList[i]);
    write(f, wCd);
  end;
  closeFile(f);
end;
Das Schreiben scheint zu klappen, da das folgende Öffnen:


Delphi-Quellcode:
procedure TForm1.Oeffnen1Click(Sender: TObject);
var
  f : file of TCd;
  i : integer;
  rCd : TCd;
begin
  with openDialog1 do
  if execute then
  begin
    assignFile(f, fileName);
    reset(f);
// cdList.free;
// cdList := TObjectList.create;
// cdList.clear;
    for i := 0 to fileSize(f) - 1 do
    begin
      //seek(f, i);
      //rCd := TCd.Create;
      read(f, rCd);
      cdList.add(rCd);
    end;
    closeFile(f);
  end;
  fillStringGrid;
end;
auch funktioniert. Jedoch nicht mehr nach Neustart des Programs. Dann bekomme ich, wenn überhaupt, nur wirkürlich
Daten. Woran liegt es? Ich hab genau gedebuggt, komischerweise schreibt er, obwohl er genau die richtige Zahl an Datensätzen
aus der Datei liest, nichts in die Variable rCd. Wenn ich das auskommentierte einbaue, funktioniert es auch nicht. Auch beim
cdList.clear-Aufruf den ich ja eigentlich brauche, damit beim Lesen ohne Neustart des Programs nicht alles 2 mal in der
Liste steht.

Mein größeres Problem ist jedoch, dass er halt wie gesagt nach Neustart scheinbar nur Müll aus der Datei liest.
Gruß
stevewilson
  Mit Zitat antworten Zitat