데모버전을 다운받아 테스트 하는데 자꾸에러가 납니다.
Delhpi 2007 indy10 입니다.
소스중
procedure TfrmMain.actDownloadFileExecute(Sender: TObject);
var
i : Integer;
ext,
s : String;
b : boolean;
begin
if lvFiles.Focused then
begin
if Assigned(lvFiles.Selected) then
lbDirectory.ItemIndex := lbDirectory.Items.IndexOf(lvFiles.Selected.Caption)
else
lbDirectory.ItemIndex := -1;
end
else
if Assigned(tvFolders.Selected) then
lbDirectory.ItemIndex := lbDirectory.Items.IndexOf(tvFolders.Selected.Text)
else
lbDirectory.ItemIndex := -1;
i := lbDirectory.ItemIndex;
if i <> -1 then
begin
s := lbDirectory.Items[i];
i := FTP.Size(s);
if i = -1 then
begin
ChangeFTPDir(s);
end
else
begin
ext := ExtractFileExt(s);
SaveFile.Filter := ext + ' files|*' + ext + '|All Files|*.*';
SaveFile.FileName := s;
if SaveFile.Execute then
begin
b := true;
if FileExists(SaveFile.FileName) then
if MessageDlg('File exists overwrite?', mtWarning, [mbYes,mbNo], 0) = mrYes then
DeleteFile(SaveFile.FileName);
if ASCIIText1.Checked then
FTP.TransferType := ftASCII
else
FTP.TransferType := ftBinary;
if b then
//여기서 Project IndyFTP.exe raisedy exception class EIDFTPFileAlreadyExists with message:
// Destination file already exists
// 이라는 에러가 납니다.
FTP.Get(s, SaveFile.FileName, True, FTP.ResumeSupported);
//도와주세요. 제발
end;
end;
end
else
MessageDlg('You must first select a file to download from the site.', mtWarning, [mbOK], 0);
end;
인디에서는 파일이 존재 한다면 위의 익셉션을 일부러 내주어서 코드 내에서 처리하게끔 해주는 것입니다.
즉, Try Except 로 묶어서 On EIDFTPFileAlreadyExists 에서 파일이 존재 할 경우의 처리를 해주시면 됩니다.
아니면 저장될 파일을 받기전에 미리 삭제 해 놓은 후 받게 해주시면 익셉션이 나지 않을 것입니다.