Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Datei löschen mit DeleteFile.... (https://www.delphipraxis.net/81164-datei-loeschen-mit-deletefile.html)

bingo72 21. Nov 2006 19:58


Datei löschen mit DeleteFile....
 
Hallo Experten!!

Ich versuche eine bestehende Datei zu löschen mittels DeleteFile...
Doch nachher ist die Datei noch immer vorhanden. Es gibt keine Fehlermeldungen oder sonstige Anomalien??!!

Zuvor habe ich die Datei umbenannt....hat funktioniert...falls das von Bedeutung ist!!??
Hab was gelesen von Datei freigeben oder so?? Wie funktioniert das?? Oder wie lösch ich sonst die Datei??

LG
Thomas

Andidreas 21. Nov 2006 20:04

Re: Datei löschen mit DeleteFile....
 
wie versuchst du die datei zu löschen???

bzw. hast mal bisl code???

Balu der Bär 21. Nov 2006 20:28

Re: Datei löschen mit DeleteFile....
 
Zitat:

Zitat von bingo72
Es gibt keine Fehlermeldungen oder sonstige Anomalien??!!

Woher weißt du das?

Schonmal Delphi-Referenz durchsuchenGetLastError oder Delphi-Referenz durchsuchenSysErrorMessage probiert, die dir einen möglichen Fehler ausgeben?

ste_ett 21. Nov 2006 20:31

Re: Datei löschen mit DeleteFile....
 
Schreingeschützte Dateien können ncith mit DeleteFile() gelöscht werden.
"SetFileAttributes(Pfad, FILE_ATTRIBUTE_NORMAL)" schafft Abhilfe. :)

Klaus01 21. Nov 2006 20:41

Re: Datei löschen mit DeleteFile....
 
@ste_ett
Zitat:

Zitat von ste_ett
Schreingeschützte Dateien können ncith mit DeleteFile() gelöscht werden.
"SetFileAttributes(Pfad, FILE_ATTRIBUTE_NORMAL)" schafft Abhilfe. :)

Wenn die Datei schreibgeschützt wäre, dann würde auch das Umbenennen nicht funktionieren, oder?

Grüße
Klaus

bingo72 22. Nov 2006 06:31

Re: Datei löschen mit DeleteFile....
 
Zitat:

Zitat von Andidreas
wie versuchst du die datei zu löschen???

bzw. hast mal bisl code???

Hier ist er:

Delphi-Quellcode:
procedure TfmMain.FormDestroy(Sender: TObject);
begin
  SetToNil();
  CoUninitialize();
  if (FileExists(TEMP_VIDEO_LARGE) AND FileExists(TEMP_VIDEO_SMALL)) then begin
    DeleteFile(TEMP_VIDEO_LARGE);
    DeleteFile(TEMP_VIDEO_SMALL);
  end;
end;
Ist quasi der letzte Code der ausgeführt wird, um Temp-Dateien, nachdem sie umbenannt worden sind (passiert im FormQueryClose mit Ja/Nein-Messagebox), sofern User dies wünscht, gelöscht werden.
Wenn zuvor die Dateien umbenannt werden sollen, gibt es ja dann keine Temp-Dateien mehr und somit überspringt er die IF-Anweisung. Andernfalls soll er die Temp-Dateien löschen...

LG
Thomas

bingo72 22. Nov 2006 06:44

Re: Datei löschen mit DeleteFile....
 
Zitat:

Zitat von Balu der Bär
Zitat:

Zitat von bingo72
Es gibt keine Fehlermeldungen oder sonstige Anomalien??!!

Woher weißt du das?

Schonmal Delphi-Referenz durchsuchenGetLastError oder Delphi-Referenz durchsuchenSysErrorMessage probiert, die dir einen möglichen Fehler ausgeben?

Hallo Balu!!

Du hast recht....mit GetLastError bekomm ich den Fehlercode 32 bedeutet ERROR_SHARING_VIOLATION...

Wie kann ich die alleinigen Rechte für mich beanspruchen??

LG
Thomas

bingo72 22. Nov 2006 06:56

Re: Datei löschen mit DeleteFile....
 
Zitat:

Zitat von Klaus01
@ste_ett
Zitat:

Zitat von ste_ett
Schreingeschützte Dateien können ncith mit DeleteFile() gelöscht werden.
"SetFileAttributes(Pfad, FILE_ATTRIBUTE_NORMAL)" schafft Abhilfe. :)

Wenn die Datei schreibgeschützt wäre, dann würde auch das Umbenennen nicht funktionieren, oder?

Grüße
Klaus

Klaus hat Recht....habe testhalber den SetFileAttributes-Befehl gesetzt...

Delphi-Quellcode:
if (FileExists(TEMP_VIDEO_LARGE) AND FileExists(TEMP_VIDEO_SMALL)) then begin
    SetFileAttributes(TEMP_VIDEO_LARGE, FILE_ATTRIBUTE_NORMAL);
    if (not(DeleteFile(TEMP_VIDEO_LARGE))) then
      str := IntToStr(GetLastError);
...und da ist er in den IF-Teil reingesprungen...also hat die Datei dennoch ned löschen können!!

Danke trotzdem für die Bemühungen...

LG
Thomas

RavenIV 22. Nov 2006 07:11

Re: Datei löschen mit DeleteFile....
 
Zitat:

Zitat von bingo72
Du hast recht....mit GetLastError bekomm ich den Fehlercode 32 bedeutet ERROR_SHARING_VIOLATION...

Wie kann ich die alleinigen Rechte für mich beanspruchen??

Es gab zu diesem Thema vor kurzem erst einen Thread dazu.
Dabei hat jemand ein Tool vorgestellt, mit dem man das Sharing beenden konnte und dann die Datei löschen kann.

muss mal mit geeigneten Suchbegriffen die Forumssuche bemühen...

bingo72 22. Nov 2006 07:26

Re: Datei löschen mit DeleteFile....
 
Ja aber ich will kein Tool einsetzen...es wird doch so im Delphi-Code Möglichkeiten geben, eine Datei löschen zu können bzw. Prozesse die den Zugriff auf die Datei blockieren zu beenden, damit man sie anschließend löschen kann oder?? :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:18 Uhr.
Seite 1 von 2  1 2      

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