https://codeday.me/ko/qa/20190516/558084.html
위 사이트가 문제의 현상을 잘 설명하였는데 2021.03.17 현재 접속이 안되는군요. 그래서 단편적인 정보지만 그래도 문제의 핵심을 잘 지적한 게시글을 연결합니다.
* 문제의 해결책을 제시해놓은 게시글입니다.
https://stackoverflow.com/questions/13959187/issue-with-fileexists-and-modified-date
//======
// 존재하는 파일을 없다는 오류 판정이 나와
// RadStudio 10 에 있는 FileExists 함수로 대체합니다.
//===
function FileExists(const FileName: string): Boolean;
{$IFDEF MSWINDOWS}
function ExistsLockedOrShared(const Filename: string): Boolean;
var
FindData: TWin32FindData;
LHandle: THandle;
begin
{ Either the file is locked/share_exclusive or we got an access denied }
LHandle := FindFirstFile(PChar(Filename), FindData);
if LHandle <> INVALID_HANDLE_VALUE then
begin
Windows.FindClose(LHandle);
Result := FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY = 0;
end
else
Result := False;
end;
var
Code: Integer;
LastError: Cardinal;
begin
Code := Integer(GetFileAttributes(PChar(FileName)));
if Code <> -1 then
Result := (FILE_ATTRIBUTE_DIRECTORY and Code = 0)
else
begin
LastError := GetLastError;
Result := (LastError <> ERROR_FILE_NOT_FOUND) and
(LastError <> ERROR_PATH_NOT_FOUND) and
(LastError <> ERROR_INVALID_NAME) and ExistsLockedOrShared(Filename);
end;
end;
{$ENDIF MSWINDOWS}
{$IFDEF LINUX}
begin
Result := euidaccess(PChar(FileName), F_OK) = 0;
end;
{$ENDIF LINUX}
//function FileExists(const FileName: string): Boolean;
//{$IFDEF MSWINDOWS}
//begin
// Result := FileAge(FileName) <> -1;
//end;
//{$ENDIF}
//{$IFDEF LINUX}
//begin
// Result := euidaccess(PChar(FileName), F_OK) = 0;
//end;
//{$ENDIF}