![]() |
Datei kann nicht gelöscht werden
Guten Morgen,
ich habe ein sehr triviales Problem, bin gerade aber nicht in der Lage, es selber zu lösen... Und zwar erstelle ich eine Datei, in der ein FileStream gespeichert wird. Mit ExtractFilePath(ParamStr(0)) bestimme ich das Verzeichnis und speichere es in eine Variable, die Datei wird folgedem auch an dem Ort abgespeichert, in dem ich das möchte. Da es ein FileStream ist, gibt es ja Probleme, wenn nichts abgespeichert wurde, deswegen prüfe ich, die Dateigröße und möchte die Datei ggf. löschen. Der Code dazu sieht wie folgt aus:
Delphi-Quellcode:
Das klappt nun aber nicht und ich weiß nicht, wieso.
Verzeichnis := ExtractFilePath(ParamStr(0)) + 'Data.fs';
if Stream.Size = 0 then DeleteFile(Verzeichnis) mfg. |
Re: Datei kann nicht gelöscht werden
Hast du im Verzeichnis entsprechende Rechte?
Ist die datei, welche du löschen willst geöffnet? |
Re: Datei kann nicht gelöscht werden
So lange das FileStream Objekt noch existiert, ist die Datei noch geöffnet. Gib das FileStream Objekt vor dem löschen frei. Und es wäre auch keine dumme Idee den Rückgabewert von DeleteFile zu überprüfen und bei einem Fehler GetLastError aufzurufen.
|
Re: Datei kann nicht gelöscht werden
Hallo,
was mir am Code ein bissel missfällt. DeleteFile(Verzeichnis) Ich denke, du löscht eine Datei ? Ich meine nur, dass der Variablenname etwas ungünstig gewählt ist. Heiko |
Re: Datei kann nicht gelöscht werden
Zitat:
Soweit hat es jetzt aber geklappt, ich geben erst den FileStream frei, und dann klappt das mit dem Löschen auch logischerweise. Eine Frage aber noch mal zu GetLastError: Ich habe jetzt in der Delphi-Hilfe folgende Beschreibung gefunden: Zitat:
|
Re: Datei kann nicht gelöscht werden
Stimmt, dem Benutzer kann es ja völlig egal sein was genau und warum/wo nicht geklappt hat was er tun wollte, und zum Debuggen ist das im Grunde auch völlig wertlos. :stupid:
|
Re: Datei kann nicht gelöscht werden
Mach mal folgendes:
Delphi-Quellcode:
Und im Gegensatz dazu:
if not DeleteFile(c:\xyz.abc) then
ShowMessage(SysErrorMessage(GetLastError));
Delphi-Quellcode:
Wobei Datei xyz.abc nicht existiert.
if not DeleteFile(c:\xyz.abc) then
ShowMessage('Fehler'); Und jetzt sag mir, was dir und dem Anwender nachher wohl mehr hilft. Dir um zu sehen, was der Grund für ein Fehler ist und dem Benutzer, dass ein Fehler aufgetreten ist und warum. Sonst macht ihr euch doch immer über so nichtssagende oder unsinnige Fehlermeldungen von Windows lustig. Aber besser machen wollt ihr es irgendwie auch nicht. Fast bei jedem Beitrag, wo es heißt "funktioniert nicht", fehlt die Fehlerbehandlung, die einem von alleine auf den Fehlergrund aufmerksam und eine Posting überflüssig gemacht hätte. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz