Подозреваю, что не в функциях дело, скорее всего нужный файл во время проверки занят какимнить процессом, ведь в sysutils`ах они определены как
Код:
procedure EAX2PChar;
asm
TEST EAX, EAX
JNZ @@exit
MOV EAX, offset['']
@@exit
end;
function FileExists(const FileName: string): Boolean;
const size_TWin32FindData = sizeof(TWin32FindData);
asm
CALL EAX2PChar
PUSH EAX
CALL GetFileAttributes
INC EAX
JZ @@exit
DEC EAX
AND AL, FILE_ATTRIBUTE_DIRECTORY
SETZ AL
@@exit
end;
...
function DirectoryExists(const Name: string): Boolean;
asm
PUSH EAX
CALL GetFileAttributes
INC EAX
JZ @@exit
DEC EAX
AND AL, FILE_ATTRIBUTE_DIRECTORY
SETNZ AL
@@exit
end;
в смысле, быстрее некуда, но правда можно еще с атрибутами файла (они ведь какбе отдельно от состояния файла живут) поиграться, без прокладок, сразу через GetFileAttributes
Код:
var
Attr: integer;
...
Attr := GetFileAttributes(PChar(FileName));
if (Attr <> -1) and (FILE_ATTRIBUTE_DIRECTORY and Attr = 0) then ... // файл есть