AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Datei kann nicht gelöscht werden

Ein Thema von Mysterio08 · begonnen am 6. Jan 2010 · letzter Beitrag vom 6. Jan 2010
Antwort Antwort
Mysterio08

Registriert seit: 11. Jan 2009
142 Beiträge
 
#1

Datei kann nicht gelöscht werden

  Alt 6. Jan 2010, 10:47
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:
  Verzeichnis := ExtractFilePath(ParamStr(0)) + 'Data.fs';
  if Stream.Size = 0 then DeleteFile(Verzeichnis)
Das klappt nun aber nicht und ich weiß nicht, wieso.
mfg.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Datei kann nicht gelöscht werden

  Alt 6. Jan 2010, 10:51
Hast du im Verzeichnis entsprechende Rechte?
Ist die datei, welche du löschen willst geöffnet?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Datei kann nicht gelöscht werden

  Alt 6. Jan 2010, 12:13
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Datei kann nicht gelöscht werden

  Alt 6. Jan 2010, 13:51
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
Heiko
  Mit Zitat antworten Zitat
Mysterio08

Registriert seit: 11. Jan 2009
142 Beiträge
 
#5

Re: Datei kann nicht gelöscht werden

  Alt 6. Jan 2010, 14:06
Zitat von hoika:
Ich denke, du löscht eine Datei ?

Ich meine nur, dass der Variablenname etwas ungünstig gewählt ist.
Da gebe ich dir Recht; ich benutze eine global deklarierte Variable für das Verzeichnis, ich sollte besser zwei Lokale deklarieren, und dann die der Prozedur zum Löschen auch dementsprechend benennen. Das werde ich gleich vornehmen.

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:
GetLastError gibt den letzten Fehler zurück, der von einem API-Aufruf in das Betriebssystem gemeldet wurde. Der Aufruf dieser Funktion setzt in der Regel den Fehlerstatus des Betriebssystems zurück.
Was genau bringt mir diese Funktion außer eine Fehlerbeschreibung (die ist ja für den zukünftigen Nutzer uninteressant, oder?)? Da DeleteFile ja eine Funktion ist kann ich doch auch deren Rückgabewert überprüfen/bearbeiten.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Datei kann nicht gelöscht werden

  Alt 6. Jan 2010, 14:12
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.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Datei kann nicht gelöscht werden

  Alt 6. Jan 2010, 14:15
Mach mal folgendes:
Delphi-Quellcode:
if not DeleteFile(c:\xyz.abc) then
  ShowMessage(SysErrorMessage(GetLastError));
Und im Gegensatz dazu:
Delphi-Quellcode:
if not DeleteFile(c:\xyz.abc) then
  ShowMessage('Fehler');
Wobei Datei xyz.abc nicht existiert.

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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


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 12:04 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