Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Eigener FileExists Code funktioniert nicht richtig

  Alt 18. Mär 2007, 16:23
Ich benutze folgenden Code für FileExists (um auf die SysUtils zu verzichten):
Delphi-Quellcode:
function FileExists(const FileName: string; dir: boolean = false): Boolean;
var
  hidate, lodate : word;
  Handle : THandle;
  FindData : TWin32FindData;
  LocalFileTime : TFileTime;

type
  LongRec = packed record
    Lo, Hi: Word;
  end;

  function SubFileExists: Boolean;
  begin
    FileTimeToLocalFileTime(FindData.ftLastWriteTime, LocalFileTime);
    result := FileTimeToDosDateTime(LocalFileTime, HiDate, LoDate);
  end;
begin
  result := false;
  Handle := FindFirstFile(PChar(FileName), FindData);
  if Handle <> INVALID_HANDLE_VALUE then
  begin
    Windows.FindClose(Handle);
    case dir of
      TRUE: if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) <> 0 then
          result := SubFileExists;
      FALSE: if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then
          result := SubFileExists;
    end;
  end;
end;
Funktioniert mit Dateien und Ordnern wunderbar. Nur wenn man ein Laufwerk angibt und die Funktion so aufruft:
FileExists('d:\', True) liefert sie False zurück, obwohl das Laufwerk existiert. Nur warum und wie kann man das beheben?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat