Q&A

  • ftp에서 update 할때 기존 파일이 있으면 덮어씌우고 싶은데요..
근데 잘 안되네요..
같은 이름의 파일이 있으면 connot create라고 나오거든요..
소스는요..

var
    DimCnt,StrLen : Integer;
    TempString : String;
    EDIData : Array[1..3] of String;
begin
    DimCnt := 1;

    For StrLen := 1 to Length(FileString) do
    begin
        If FileString[StrLen] = '|' Then
        begin
            EDIData[DimCnt] := TempString;
            TempString := '';
            Inc(DimCnt);
        end
        else
            TempString := TempString + FileString[StrLen];
    End;

    EDIData[DimCnt] := TempString;
    If CompLocalFile(EDIData) Then
    Begin
        TempString := GetFileName(EDIData[1]);
        BytesToTransfer := IdFTP1.Size(TempString);
        lblNowFile.Caption := TempString + '파일을 다운중입니다.';
        IdFTP1.Get('/'+GetFileName(EDIData[1]),'c:유통관리'+GetFileName(EDIData[1]), true);
    End;
end;

function TForm1.CompLocalFile(const Data : array Of String) : Boolean;
var
    MyFile : TFileStream;
    FileDate: TDateTime;
Begin
    If Not FileExists('c:유통관리'+GetFileName(Data[0])) Then
    Begin
        Result := True;
        exit;
    End;

    MyFile := TFileStream.Create('c:유통관리'+GetFileName(Data[0]),FmOpenRead);

    If MyFile.size <> StrToInt(Data[1]) Then
    Begin
        Result := True;
        Exit;
    End;

    MyFile.Free;

    FileDate := FileDateToDateTime(FileAge('c:유통관리'+GetFileName(Data[0])));
    If DateTimeToStr(FileDate) < Data[2] then
    Begin
        ShowMessage( DateTimeToStr(FileDate) + '||' + Data[2] );
        Result := True;
        Exit;
    end;

    Result := False;

이렇게 했는데요..
소스중에서..

IdFTP1.Get('/'+GetFileName(EDIData[1]),'c:유통관리'+GetFileName(EDIData[1]), true);

이부분이요..끝에 true 라고 주면 덮어씌워져야 하는거 아닌가요?
어디를 고쳐야 할지 잘 모르겠어요..
아시는 분 답변 좀 주세요~~ㅡoㅡ
그럼 이만..(__)
1  COMMENTS
  • Profile
    갈매기 2002.11.12 03:27


    프로그램이 실행중이면 덮어씌워지지가 않는걸로 압니다..
    프로그램을 열기전에 날짜를 비교해서 업데이트를 하시든지
    아님 프로그램을 닫고 윈도우함수를이용하여 업데이트프르그램을 실행시켜서
    업데이트가 끝나면 다시 프로그램을 실행시키는 방법도 있을꺼 같은데
    좀 귀찮겠죠.
    아님 더 좋은방법이 있나요?