Einzelnen Beitrag anzeigen

Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.336 Beiträge
 
Delphi XE2 Professional
 
#1

Ordner löschen: mit Win gehts nicht, mit Delphi schon ?

  Alt 1. Okt 2007, 15:52
Hallo,

ich bin gerade total verwirrt.

Ich hatte mal eine Installation ausgeführt bei der leider der Windows-Installer Dateien entpackte und diese auf meiner externen Festplatte in einen Ornder zwischenparkte.
Soweit so gut, mein Problem war, dass ich diesen Ordner nicht mehr löschen konnte.

Mein Vista sagte, ich hätte nicht die Berechtigungen diesen zu löschen (trotz Admin-Rechten und ausgeschalteter Benutzerkontensteuerung oder wie das Ding heisst).

Letztens hatte ich diese Festplatte bei einem Freund und hab hatte ihm gebeten zu versuchen diesen Ordner zu löschen.
Er hat Win XP Pro. Auch Win XP hat sich geweigert. Er hatte dann noch ein Tune Up-Programm mit dem man Daten löschen kann.
Das hat dann soweit auch geklappt, bis auf einen Unterordner und dessen Dateien. Diese konnten nicht gelöscht werden und deswegen auch nicht der eigentliche Ordner.

Nun hatte ich zwar weniger Dateien, aber dieser Ordner war noch da.

Jetzt dacht ich mir ich könne ja mal probieren, diesen Ordner mit einem Code aus Delphi raus zu löschen.

Bei dsdt.info hab ich diesen Code gefunden:

Delphi-Quellcode:
uses ShellAPI;

function DeleteFile(const AFile: string): boolean;
var
 sh: SHFileOpStruct;
begin
 ZeroMemory(@sh, sizeof(sh));
 with sh do
   begin
   Wnd := Application.Handle;
   wFunc := fo_Delete;
   pFrom := PChar(AFile +#0);
   fFlags := fof_Silent or fof_NoConfirmation;
   end;
 result := SHFileOperation(sh) = 0;
end;
Da dieser Code die ShellAPI verwendet, dacht ich mir es könne ja nicht funktionieren, da ja Windows mit die Finger im Spiel hat.

ABER: Ich kann es nicht fassen. Ich bekam ein true von dieser Funktion und bei einem Blick auf die Festplatte: Der Ordner ist verschwunden, weg, away, verflogen,... - einfach nicht mehr da.

Nun wieder zu meiner Verwirrtheit:
Wieso konnt ich den mit dem oberen Code löschen, aber über Windoofs nicht?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat