Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Testdatei im System 32 löschen (https://www.delphipraxis.net/112071-testdatei-im-system-32-loeschen.html)

BornToBeBreit 14. Apr 2008 18:46


Testdatei im System 32 löschen
 
Hey, ich versuche grad mit

Delphi-Quellcode:
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;

if deletefile(GetSystemDir+'\datei.txt') then
showmessage'datei gelöscht';
aber er löscht sie einfach nicht ...

mkinzler 14. Apr 2008 18:48

Re: Testdatei im System 32 löschen
 
Hat der Benutzer Adminrechte?

toms 14. Apr 2008 18:49

Re: Testdatei im System 32 löschen
 
Beinhaltet GetSystemDir evtl. schon den Backslash?

BornToBeBreit 14. Apr 2008 19:03

Re: Testdatei im System 32 löschen
 
hmm, ja also der benutzer hat adminrechte, und nein an dem backslash liegts nicht, son blödes ding, der leert die datei nur ...

DeddyH 14. Apr 2008 19:04

Re: Testdatei im System 32 löschen
 
Wieso nimmst Du eigentlich nicht die "Standard"-DeleteFile?

toms 14. Apr 2008 19:07

Re: Testdatei im System 32 löschen
 
Liefert SysErrorMessage(GetLastError) eine Fehlermeldung?

BornToBeBreit 14. Apr 2008 19:17

Re: Testdatei im System 32 löschen
 
@ DeddyH weil das auch nicht geht :(

@ toms wie meinst du das?

toms 14. Apr 2008 19:23

Re: Testdatei im System 32 löschen
 
Zitat:

Zitat von BornToBeBreit
@ toms wie meinst du das?

Rufe nach dem DeleteFile Aufruf

Delphi-Quellcode:
ShowMessage(SysErrorMessage(GetLastError))
auf

Klaus01 14. Apr 2008 19:27

Re: Testdatei im System 32 löschen
 
Zitat:

Zitat von BornToBeBreit
hmm, ja also der benutzer hat adminrechte, und nein an dem backslash liegts nicht, son blödes ding, der leert die datei nur ...

Kein blödes Ding, so soll es wohl sein ->link

Grüße
Klaus

BornToBeBreit 14. Apr 2008 19:36

Re: Testdatei im System 32 löschen
 
ja aber mit der stanard funktion passiert das selbe ...


und bei ShowMessage(SysErrorMessage(GetLastError))

sagt er nur das der vorgang erfolgreich beendet wurde ...

Luckie 14. Apr 2008 19:37

Re: Testdatei im System 32 löschen
 
Von was für einem Betriebssystem reden wir eigentlich?

BornToBeBreit 14. Apr 2008 19:49

Re: Testdatei im System 32 löschen
 
wir reden von wiendows xp sp 2

toms 14. Apr 2008 21:46

Re: Testdatei im System 32 löschen
 
Ich habe gesehen, dass GetLastError bei SHFileOperation nicht funktioniert.
Überprüfe mal, was für einen Wert SHFileOperation zurückgibt.

Hier findest du ein Fehlercode Liste.

alzaimar 15. Apr 2008 06:31

Re: Testdatei im System 32 löschen
 
Hat das vielleicht was mit den Reparaturbestrebungen von Windows (Stichwort 'dllcache') zu tun?

mashutu 15. Apr 2008 12:50

Re: Testdatei im System 32 löschen
 
Zitat:

Zitat von alzaimar
Hat das vielleicht was mit den Reparaturbestrebungen von Windows (Stichwort 'dllcache') zu tun?

Nein, ich kann hier unter XP SP2 im Windows/System32-Ordner beliebige Dateien erfolgreich Loeschen (nur mit selbst erstellten getestet :-))
und zwar mit sysutils.deleteFile();

Ich vermute daher, dass die Datei nicht korrekt geschlossen wurde und somit noch ein offenes Handle hat.

Schau mal in Deinen code wo Du die Datei erstellst.

BornToBeBreit 17. Apr 2008 16:26

Re: Testdatei im System 32 löschen
 
hey, ich hab grad was komisches rausgefunden, wenn ich das genau gleich in einem neuen projekt mache, also ohne meinen restlichen code, dann gehts ...


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