|
jujeon 님이 쓰신 글 :
: Ftp server에서 파일을 다운받는 프로그램을 만드는 중입니다.
:
: 먼저 다운받을 파일의 크기를 얻은 후 다운받는 루틴입니다.
:
: 다운 진행율을 표시하기 위해서 메서드는 ReceiveAsync()를 썼구요.
:
: 그런데 파일 크기를 얻은 후 막바로 파일을 받으려니까 받아지질 않는군요.
:
: 그래서 그 중간에 ShowMessage()로 잠시 시간을 벌려 놓으니까 이번엔 제대루 받아지고...
:
: 왜 그런지 이유와 해결 방법을 부탁드립니다.
:
: 아래는 소스입니다.
:
:
: void TForm1::FileDownload(AnsiString FileName)
: {
: FtpClient1->HostName = HostName
: FtpClient1->HostDirName = HostDir;
: FtpClient1->HostFileName = FileName;
: FtpClient1->FileSize();
:
: // ShowMessage("download 1");
:
: FileSize = FtpClient1->SizeResult;
:
: FtpClient1->LocalFileName = FileName;
: FtpClient1->ReceiveAsync();
: }
: //---------------------------------------------------------------------------
:
: void __fastcall TForm1::FtpClient1Progress(TObject *Sender,
: int Count, bool &Abort)
: {
: StatusBarMain->Panels->Items[0]->Text = AnsiString((int)(Count*100. / FileSize)) + " %";
: StatusBarMain->Repaint();
: }
: //---------------------------------------------------------------------------
:
임펠리테리입니다.
ICS는 써본지가 너무 오래되어서 기억이 가물가물합니다만, ICS에는 항상 동기모드, 비동기모드의 함수가 따로 있었던 걸로 기억합니다. 말씀하신 FTP에서의 ReceiveAsync() 함수는 이름부터가 비동기이군요. ^^
혹시나 해서.. 여기서 함수가 비동기라는 말의 의미는, 요청만을 전달하고 바로 돌아오는 함수라는 말입니다.
그럼 참고하시길....
|