Entwickler-Ecke

Dateizugriff - Datei nach Speichern nicht zu öffnen


to-wer - Sa 21.06.08 21:02
Titel: Datei nach Speichern nicht zu öffnen
Hallo,

ich speichere eine Listbox mit .savetofile() auf Festplatte ab.

Leider ist die Datei danach mit nichts zu öffnen. Selbst Excel stürzt beim Öffnen ab.
Auch nach dem Schließen von Delphi ändert sich daran nicht. Bin davon ausgegangen, dass der Speicherbefehl die Datei auch gleich schließt. Oder muß man da noch mehr machen?

Wo könnte der Fehler liegen?


vielen Dank
to-wer


Boldar - Sa 21.06.08 21:23

Wenn du aus einer Listbox heraus speicherst, musst du die Datei auch mit der Methode loadfromfile der Listbox laden. Mit Excel hat dass Garnichts zu tun.


to-wer - Sa 21.06.08 21:27

Natürlich hat das nichts mit Excel zu tun.
Auch mit loadfromfile geht es nicht, es kommt eine Message... "auf die Datei konnte nicht zugegriffen werden, da ein sie von einem anderen Prozess genutzt wird".
Das wird auch der Grund sein, warum kein anderes Programm die Datei öffnen kann.
Aber wie schließe ich die Datei korrekt?


Gausi - Sa 21.06.08 21:48

Machst du sonst noch was mit der Datei? Einfach nur SaveToFile blockiert afaik nichts, wenn das Speichern abgeschlossen ist... :gruebel:


to-wer - Sa 21.06.08 22:03

Habe es gefunden...
Es liegt doch an Excel. Ich versuchte zur Kontrolle, die Datei mit Excel zu öffnen.
Da in meinen Daten als erstes "ID" kommt, stürzt Excel ab, da "ID" für irgendwas spezielles steht (keine Ahnung...) und blockiert damit die Datei für alles andere... bis zu einem Neustart.

Danke für die Hilfe.
to-wer


Boldar - Sa 21.06.08 22:41

Naja, selbst wenn du es geschafft hättest, die Datei mit excel zu öffnen, hättest du nur wirre Zeichen gesehen, da die savetofiel Routine nicht im Escel-Format speichert (egal ob die Dateiendung .xls ist)! Ein Texteditor wäre da besser.


Gausi - Sa 21.06.08 22:44

Laut dem Topic in der DP hat er das als CSV abgespeichert, dann sollte das schon klappen. ;-)

btw.: Beim nächsten Mal bitte die Crosspostings gegenseitig verlinken. ;-)