Also, ich habe eben mal nachgeschaut. In D5 benutzt Borland die
API-Funktion "GetFileAttributes":
Delphi-Quellcode:
function DirectoryExists(const Name: string): Boolean;
var
Code: Integer;
begin
Code := GetFileAttributes(PChar(Name));
Result := (Code <> -1) and (FILE_ATTRIBUTE_DIRECTORY and Code <> 0);
end;
Jetzt wäre aber die Frage, warum das bei Windows ME nicht klappen soll. Im
PSDK finden sich jedenfalls keine speziellen Hinweise zu ME. Bei Delphi 7 sieht die Funktion aber genauso aus wie oben gezeigt. Demzufolge müsste ein D7-Programm das gleiche Problem haben. Hat jemand ME und kann das bestätigen?
Ansonsten würde ich, wenn´s unbedingt eine eigene Funktion für Verzeichnisse sein soll, folgendes vorschlagen:
Delphi-Quellcode:
function DirectoryExists(
const Directory:
string): boolean;
var
Handle : THandle;
FindData : TWin32FindData;
begin
Handle := FindFirstFile(pchar(Directory),FindData);
Result := (
Handle <> INVALID_HANDLE_VALUE)
and
(FindData.dwFileAttributes
and FILE_ATTRIBUTE_DIRECTORY <> 0);
if(
Handle <> INVALID_HANDLE_VALUE)
then
Windows.FindClose(
Handle);
end;
@Pseudemys Nelsoni: Doch, denn "FileExists" hat nichts mit der
VCL zu tun. Du kannst die SysUtils- und ähnliche Units auch in
nonVCL/Konsolenprojekte einbinden. Es ist eben nur so, dass das Programm dadurch etwas größer wird, weil im Hintergrund bestimmte Dinge initialisiert werden, usw.
Wenn du auch auf die SysUtils usw. verzichten willst, dann kommst du um die
API-Funktionen nicht herum.
Und mit "
Rad neu erfinden" meine ich, dass du bspw. Fragen stellst, die ich (bei Kenntnis der
Win32-
API-Tutorials als Beispiel) nicht stellen würde, weil du dort schon die Antworten findest. Zudem liegen bei den Samples der Tutorials ebenfalls diverse erweiterte bzw. gepatchte Units bei. Eine davon enthält auch die o.g. "fileexists"-Funktion.