Entwickler-Ecke

Dateizugriff - ListView speichertnicht im FileStream!


fussl - Fr 16.01.04 13:42
Titel: ListView speichertnicht im FileStream!
Hallo!
Mein Problem ist folgendes:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
try
  strm := TFileStream.Create(ExtractFilePath(Application.ExeName)
              + 'Listen\' + ini.ReadString('Autoload''Liste'''), fmOpenRead);
  strm.ReadComponent(Listview1);
  strm.Free;

  ini.WriteString('Liste''Liste', ini.ReadString('Autoload''Liste'''));
  ini.WriteString('Liste''Pfad', ExtractFilePath(Application.ExeName) +
                       'Listen\');
except
  ...
end;

Damit lade ich beim on_create meines Forms eine Datei in ein ListView. Wenn ich es dann per knopfdruck wieder mit selben Namen und selben Platz speichern will, sagt der Compiler dass die Datei nicht erstellt werden konnte. Das ist der Code zum Speichern:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
try
  path := ini.ReadString('Liste''Pfad''') + ini.ReadString('Liste''Liste''');
  strm := TFileStream.Create(ini.ReadString('Liste''Pfad''') + ini.ReadString('Liste''Liste'''), fmCreate);
  strm.WriteComponent(ListView1);
  strm.Free;
except
  ...  
end;

aus der ini hohlt sich das Programm den Pfad und Namen der Datei, die automatisch geladen werden soll. Die Pfadangaben stimmen. Wenn ich die Datei unter einem anderen Namen speicher klappts, nur eben nicht unter dem selben Namen.
Vielleicht findet ja einer von euch den Fehler....[/delphi]


Motzi - Fr 16.01.04 13:51

Stimmt denn der Pfad den du hier zusammenstückeslt?

Delphi-Quelltext
1:
strm := TFileStream.Create(ini.ReadString('Liste''Pfad''') + ini.ReadString('Liste''Liste'''), fmCreate);                    


Überprüf das mal mit dem Debugger...


fussl - Fr 16.01.04 14:26

Ja, der stimmt, da ich ja die Meldung "Delphi konnte folgende Datei nicht erstellen: 'Pfad'" ausgegeben bekomme. Und die Pfadangabe stimmt da immer 100%ig.

Ich hab jetzt mal den öffnen Code aus dem on_create Ereignis des Forms rausgenommen und die Datei per Button geöffnet, dann die selbe Speicherfunktion wie oben gepostet benutzt, und siehe da, es hat funktionert. Also muss der Code schon irgendwo richtig sein. Vielleicht hängts ja am on_create. Weiß da jemand was?