Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: IOResult und FileExists bei UAC unter Vista fehlerhaft?

  Alt 5. Apr 2007, 10:04
Die Funktion FileExists aus Unit SysUtils war schon immer etwas mangelhaft.
Grund:
FileExists stützt sich auf FileAge ab. So kann es passieren, dass eine vorhandene Datei
mit defektem Datums-/Zeiteintrag als nicht vorhanden gemeldet wird.

Hat dir eigentlich noch niemand gesagt, dass die Funktionen
AssignFile, ReWrite, CloseFile, Write, Read, ... und der Datentyp File (und alle Verwandten)
steinalte Überbleibsel aus den Anfangstagen von Pascal sind ?

Stattdessen sollte TFileStream verwendet werden.
Für deinen Zweck (herauszufinden, ob in einen angegebenen Ordner geschrieben werden kann)
sollte man noch näher an die Windows API herangehen:

Delphi-Quellcode:
function IsPathWriteable(const path:string):Boolean;
var
   filename : string;
   hnd : THandle;
begin
   filename := IncludeTrailingBackslash(path)+'.$$$'; // temporary filename
   DeleteFile(PChar(filename));

   hnd := CreateFile(PChar(filename),GENERIC_WRITE, 0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL,
      0);

   if hnd <> INVALID_HANDLE_VALUE then
   begin
      CloseHandle(hnd);
      DeleteFile(PChar(filename));
      Result := True;
   end
   else
      Result := False;
end;
Andreas
  Mit Zitat antworten Zitat