Показать сообщение отдельно
  #2  
Старый 17.10.2016, 22:42
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Подозреваю, что не в функциях дело, скорее всего нужный файл во время проверки занят какимнить процессом, ведь в 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 ... // файл есть
Ответить с цитированием