블로그 이미지
세상살아가는 여러가지 이야기
by 헤르미트

NOTICE

CALENDAR

«   2019/08   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
  • Total :
  • Today :  | Yesterday :

CATEGORY

분류 전체보기 (32)
만년필과 친구들 (9)
Programing (6)
휴대용 장치들 (6)
Windows (3)
잡담 (8)

RECENT ARTICLE

RECENT COMMENT

ARCHIVE



  1. 2019.08.16
    Nettuno 1911 Rose Gold Crono
  2. 2019.08.16
    Delphi 7 FileExists() 존재하는 파일이 없다고 나오는 문제 이슈

And

https://codeday.me/ko/qa/20190516/558084.html

 

델파이 – FileExists 및 수정 날짜 관련 문제 - 코드 로그

내 서버에는 수정 날짜 31 / DEC / 1979 (이유를 묻지 않음) 파일이 몇 개 있습니다. 따라서 FileExists는 false를 반환합니다. Sysutils.FileExists는 다음과 같습니다. function FileAge(const FileName: string): Integer; var Handle: THandle; FindData: TWin32FindData; LocalFileTime: TFileTime; begin Handle :=

codeday.me

위 사이트가 문제의 현상을 잘 설명하였는데 2021.03.17 현재 접속이 안되는군요. 그래서 단편적인 정보지만 그래도 문제의 핵심을 잘 지적한 게시글을 연결합니다.

http://www.delmadang.com/community/bbs_view.asp?bbsNo=19&bbsCat=46&indx=445458&keyword1=%C1%A4%BB%F3%C0%FB%C0%B8%B7%CE&keyword2=

 

* 문제의 해결책을 제시해놓은 게시글입니다.

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}

 

And