Q&A

  • 파일 날짜 비교후 다운로드시 에러
procedure Tcaaef110.FileDown(cmd: string;LocalName: string);
var
  OldCursor: TCursor;
begin
  ProgressBar1.Visible := true;
  with FTP do
  begin
    Host := '100.100.10.1';
    Port := 21;
    Username := 'oracle';
    Password := 'oracle';
    Disconnect;
    Connect;
    ChangeDir('/appl/oracle/source/');
    TransferType := ftBinary;
    OldCursor := Screen.Cursor;
    try
      Screen.Cursor := crHourGlass;

      if FileDate(cmd,false) > GetClientFileDate(LocalName) then  begin
         Get(cmd, LocalName, True, False);

      end;

    finally
      Screen.Cursor := OldCursor;
    end;
    ProgressBar1.Visible := false;

  end;

end;


function Tcaaef110.GetClientFileDate(cFileName: String) : TDateTime;
var    FileHandle : Integer;
begin
  FileHandle := FileOpen(cFileName, fmShareDenyNone);
  FileHandle := FileGetDate(FileHandle);
  Result := FileDateToDateTime(FileHandle);
  FileClose(FileHandle);
  end;

위 소스는 서버에 있는 파일의 날자와 내PC에 있는 파일의 날짜를 비교하여
서버에 있는 파일의 날짜가 최신이면 파일을 다운로드 받는 소스 입니다.
그런데 내 PC의 날짜를 알기위해 function  GetClientFileDate 을 실행 시킨후
다운로드 받으면

"cannot create file 'c:\menu\casjs.exe'. 다른 프로세스가 파일을 사용 중이기 때문에 프로세스가 액세스
  할 수 없습니다."

란 에러 메세지가 발생합니다..
function  GetClientFileDate 를 실행 시키지 않으면 다운로드는 잘되는데 무엇이 문제인지 알수가 없습니다..
서버에 있는 파일의 날자와 내PC에 있는 파일의 날짜를 비교할수 있는 다른 방법이 있는지 아니면
위 에러를 해결할수 있는 방법에 대해 고수님들의 조언 부탁 드립니다.
2  COMMENTS