![]() |
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 |
Re: Datei wird nicht gelöscht
Zeig doch mal die Zeile mit dem Löschbefehl
|
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
|
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?
|
Re: Datei wird nicht gelöscht
DeleteFile() erwartet eine String und keinen PChar
|
Re: Datei wird nicht gelöscht
Ja das hab ich. Wie ja oben steht habe ich mir die SysErrorMessage ausgegeben:
Delphi-Quellcode:
@mKinzler: Bei mir steht, dass DeleteFile einen PWideChar erwartet
if not DeleteFile(PChar(myFile)) then
ShowMessage(SysErrorMessage(GetLastError)); |
Re: Datei wird nicht gelöscht
Die Funktion aus den SysUtils aber nicht.
|
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:
|
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 |
Re: Datei wird nicht gelöscht
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:02 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-2025 by Thomas Breitkreuz