AGB  ·  Datenschutz  ·  Impressum  







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

Datei wird nicht gelöscht

Ein Thema von Moony · begonnen am 23. Jun 2009 · letzter Beitrag vom 23. Jun 2009
Antwort Antwort
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#1

Datei wird nicht gelöscht

  Alt 23. Jun 2009, 07:24
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
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Datei wird nicht gelöscht

  Alt 23. Jun 2009, 07:33
Zeig doch mal die Zeile mit dem Löschbefehl
Markus Kinzler
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Datei wird nicht gelöscht

  Alt 23. Jun 2009, 07:45
DeleteFile(PChar(myFile)); // myFile ist ein AnsiString mit vollständigem Pfad und dem Dateinamen der an die Funktion übergeben wird
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: Datei wird nicht gelöscht

  Alt 23. Jun 2009, 07:47
Schonmal den Rückgabewert der Funktion ausgewertet (wie es immer der Fall sein sollte) und entsprechend bei einem Fehler die Windows Fehlermeldung ausgegeben?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Datei wird nicht gelöscht

  Alt 23. Jun 2009, 07:47
DeleteFile() erwartet eine String und keinen PChar
Markus Kinzler
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Datei wird nicht gelöscht

  Alt 23. Jun 2009, 07:49
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
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Datei wird nicht gelöscht

  Alt 23. Jun 2009, 07:50
Die Funktion aus den SysUtils aber nicht.
Markus Kinzler
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#8

Re: Datei wird nicht gelöscht

  Alt 23. Jun 2009, 07:50
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 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...
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Datei wird nicht gelöscht

  Alt 23. Jun 2009, 07:54
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!!!

@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
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
CazperFuture

Registriert seit: 7. Apr 2009
34 Beiträge
 
#10

Re: Datei wird nicht gelöscht

  Alt 23. Jun 2009, 14:10
Ich empfehle :

Delphi-Treff
  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 02:22 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