Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Datei wird nicht gelöscht (https://www.delphipraxis.net/136069-datei-wird-nicht-geloescht.html)

Moony 23. Jun 2009 06:24


Datei wird nicht gelöscht
 
Hallo zusammen,

in meinem Programm trigger ich auf ein Verzeichnis und schaue nach dem Vorkommen einer bestimmten Datei. Wenn diese Datei existiert lese ich diese Datei mit AssignFile() ein und schließe sie danach mit CloseFile(). Bevor ich meine Funktion beende will ich diese Datei löschen. Und an dieser Stelle funktionierts nicht.

SysErrorMessage ergibt folgenden Meldung: Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch.

Das kann ich gar ncht nachvollziehen, denn mit dem gleichen Pfad und Dateinamen habe ich vorher die Datei eingelesen und diese Datei existiert definitiv noch in diesem Verzeichnis.
Was kann das sein?

Gruß, Moony

mkinzler 23. Jun 2009 06:33

Re: Datei wird nicht gelöscht
 
Zeig doch mal die Zeile mit dem Löschbefehl

Moony 23. Jun 2009 06:45

Re: Datei wird nicht gelöscht
 
Delphi-Quellcode:
DeleteFile(PChar(myFile)); // myFile ist ein AnsiString mit vollständigem Pfad und dem Dateinamen der an die Funktion übergeben wird

Muetze1 23. Jun 2009 06:47

Re: Datei wird nicht gelöscht
 
Schonmal den Rückgabewert der Funktion ausgewertet (wie es immer der Fall sein sollte) und entsprechend bei einem Fehler die Windows Fehlermeldung ausgegeben?

mkinzler 23. Jun 2009 06:47

Re: Datei wird nicht gelöscht
 
DeleteFile() erwartet eine String und keinen PChar

Moony 23. Jun 2009 06:49

Re: Datei wird nicht gelöscht
 
Ja das hab ich. Wie ja oben steht habe ich mir die SysErrorMessage ausgegeben:

Delphi-Quellcode:
if not DeleteFile(PChar(myFile)) then
  ShowMessage(SysErrorMessage(GetLastError));
@mKinzler: Bei mir steht, dass DeleteFile einen PWideChar erwartet

mkinzler 23. Jun 2009 06:50

Re: Datei wird nicht gelöscht
 
Die Funktion aus den SysUtils aber nicht.

Muetze1 23. Jun 2009 06:50

Re: Datei wird nicht gelöscht
 
Zum einen die Anmerkung von mkinzler, welche durch eine Doppeldeutigkeit der DeleteFile() Funktion der SysUtils und der von Windows hervorgerufen wird und zum anderen doch nochmal den String überprüfen. Die o.g. Fehlermeldung kommt wenn ungültige Zeichen enthalten sind, wie z.B. ein zweiter Doppelpunkt. Aber vorher mkinzlers Hinweis folgen...

Zitat:

Zitat von Moony
@mKinzler: Bei mir steht, dass DeleteFile einen PWideChar erwartet

Und dann gibst du ihm einen Zeiger auf einen PAnsiChar? Ist doch dann kein Wunder, das da murks rauskommt, wenn du pro Zeichen ein Byte verwendest und Windows pro Zeichen 2 Bytes erwartet. Ich gehe davon aus, dass deine Profilangabe mit Delphi 7 korrekt ist...

Moony 23. Jun 2009 06:54

Re: Datei wird nicht gelöscht
 
Jepp, das ist des Rätsels Lösung. Es wurde die Funktion von Windows.pas und nicht von SysUtils.pas verwendet.

Was die Gültigkeit des Strings betrifft, das habe ich schon überprüft, weil ich vorher auch genau mit dieser Variable die Datei öffne und einlese, demnach kann an dem String nicht falsch sein. Auch im Debugmodus hatte ich den Inhalt nochmal geprüft und für richtig erklärt.

Danke für die schnelle Hilfe!!! :thumb:

@Muetze: Ja, die Angabe von Delphi 7 ist korrekt, aber ich arbeite zur Zeit mit zwei Delphi Versionen. Das Problem hier betraf Delphi 2009. Im Profil kann man, aber leider nur eine Version angeben.

Gruß, Moony

CazperFuture 23. Jun 2009 13:10

Re: Datei wird nicht gelöscht
 
Ich empfehle :

Delphi-Treff


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:36 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