Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Gesperrte Dateien löschen (https://www.delphipraxis.net/73622-gesperrte-dateien-loeschen.html)

himitsu 20. Jul 2006 17:26


Gesperrte Dateien löschen
 
aus Code-Library -> Object-Pascal / Delphi-Language -> Gesperrte Dateien löschen

irgendwie seh ich doppelt

Delphi-Quellcode:
// NT/2K/XP/.NET Systeme
if StrLen(PChar(ExtractFileDrive(aFileName))) < 3 then
  Result := MoveFileEx(PChar(aFileName), nil, MOVEFILE_REPLACE_EXISTING + 
      MOVEFILE_DELAY_UNTIL_REBOOT)
else
  Result := MoveFileEx(PChar(aFileName), nil, MOVEFILE_REPLACE_EXISTING + 
      MOVEFILE_DELAY_UNTIL_REBOOT);
oder kurzgesagt ... was ist hier der Unterschied?

mirage228 20. Jul 2006 17:56

Re: Gesperrte Dateien löschen
 
Hi,

Sieht für mich auch identisch aus :gruebel:

... aber sollten die Optionen nicht mit OR statt mit + verknüpft werden?

mfG
mirage228

generic 21. Jul 2006 06:22

Re: Gesperrte Dateien löschen
 
so lange man die konstanten nicht doppelt angiebt oder es konstanten mit zusammengefassten werten gibt ist das kein problem.

binär:
10 + 01 = 11
10 or 01 = 11

also jeweils da gleiche ergebnis.


zu der frage oben ich kann auch keinen unterschied entdecken.

Go2EITS 21. Jul 2006 11:40

Re: Gesperrte Dateien löschen
 
Hallo, himitsu!

Der erste Teil wird ausgeführt wenn die kleiner als Len 3 sind, um Fehleingaben wie C:\ zu umgehen
der zweite Teil geht in Aktion wenn z. B. C: übergeben wurde.

Dieser Code ist aber meines Erachtens zweifach fehlerhaft, weil ja ein hier ein 'C:\' = Len 3 übergeben werden kann. Richtig muss es heißen, da ja ein FilePath mit der Laufwerksangabe wohl mindestens 4 Buchstaben haben muss und z. B. so aussieht: C:\a und wenn Len < 4 ist, wird nix gelöscht und result:=false; gesetzt.

Delphi-Quellcode:
if StrLen(PChar(ExtractFileDrive(aFileName))) < 4 then
  Result := False; // Falls Filename z. B. nur aus C:\ besteht
else
  Result := MoveFileEx(PChar(aFileName), nil, MOVEFILE_REPLACE_EXISTING + 
      MOVEFILE_DELAY_UNTIL_REBOOT);
Ich hoffe, ich konnte Dir weiterhelfen!

Beste Grüße.
Go2EITS

himitsu 21. Jul 2006 12:02

Re: Gesperrte Dateien löschen
 
Ein bissl hab ich mir sowa schon gedacht .. wollte aber unsere Mieze nich die Arbeit wegnehmen :roll:

Das Problem war halt nur, das in dem OriginalCode diese IF-Abrafge total sinnlos ist ... wird ja so, oder so das selbe ausgeführt :stupid:

Go2EITS 21. Jul 2006 12:23

Re: Gesperrte Dateien löschen
 
Genau. In dem Falle ist die IF Abfrage sinnlos. Kannst aber meinen Code in eine Function mit Boolean stecken. Wenn der Path kleiner als 4 Buchstaben sein sollte, kannst Du ein False zurückgeben. Nicht schöner Code, weil ja auch die Function MoveFileEx ja auch FALSE zurückgeben kann, aber für den Zweck sicherlich vorerst ausreichend. CU :hi:

DP-Maintenance 3. Aug 2006 13:33

DP-Maintenance
 
Dieses Thema wurde von "Chakotay1308" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Windows API / MS.NET Framework API" verschoben.
Fehler ist korrigiert. Vielen Dank für den Hinweis und die Lösung. :)


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