- Kod: Zaznacz cały
void __fastcall TFormMsg::Button2Click(TObject *Sender)
{
ProgressBar1->Visible=true;
IdFTP2->Connect();
ProgressBar1->Max = IdFTP2->Size("setup.exe");
Application->ProcessMessages();
IdFTP2->Get("setup.exe", "setup.exe", true, false);
IdFTP2->Disconnect();
FormMsg->Close();
}
//---------------------------------------------------------------------------
void __fastcall TFormMsg::IdFTP2Work(TObject *ASender, TWorkMode AWorkMode, __int64 AWorkCount)
{
ProgressBar1->Position = AWorkCount;
Application->ProcessMessages();
}
//---------------------------------------------------------------------------
void __fastcall TFormMsg::IdFTP2WorkEnd(TObject *ASender, TWorkMode AWorkMode)
{
ProgressBar1->Position = ProgressBar1->Max;
ShellExecute(FormMsg->Handle, NULL , "setup.exe", "", "", SW_SHOWNORMAL);
}
//---------------------------------------------------------------------------
1. Nie działa mi to :
- Kod: Zaznacz cały
ProgressBar1->Max = IdFTP2->Size("setup.exe");
funkcja zwraca mi wartość (-1) a plik ma około 7266600 bajtów. Więc wartość Max komponentu PrograessBar ustawiłem właśnie na 7266600 i to jest ok ale jest to tylko obejście problemu i chciałbym wiedzieć czemu funkcja size zwraca (-1) i jak to poprawić.
2. Komponent pobiera plik ale zawiera on błąd i nie jest możliwe jego otwarcie w dodatku pobrany plik ma o 0.03 Mb więcej od pierwotnej wersji.
Więc mój kod po "obejściu" :
- Kod: Zaznacz cały
void __fastcall TFormMsg::Button2Click(TObject *Sender)
{
ProgressBar1->Visible=true;
IdFTP2->Connect();
ProgressBar1->Max = 7295000;
Application->ProcessMessages();
IdFTP2->Get("setup.exe", "setup.exe", true, false);
IdFTP2->Disconnect();
FormMsg->Close();
}
//---------------------------------------------------------------------------
void __fastcall TFormMsg::IdFTP2Work(TObject *ASender, TWorkMode AWorkMode, __int64 AWorkCount)
{
ProgressBar1->Position = AWorkCount;
Application->ProcessMessages();
}
//---------------------------------------------------------------------------
void __fastcall TFormMsg::IdFTP2WorkEnd(TObject *ASender, TWorkMode AWorkMode)
{
ProgressBar1->Position = ProgressBar1->Max;
ShellExecute(FormMsg->Handle, NULL , "setup.exe", "", "", SW_SHOWNORMAL);
}
//---------------------------------------------------------------------------
Ale dalej nie wiem czemu plik jest pobrany źle.
Mam jeszcze pytanie po za tematem ale o IdFTP mianowicie w tym komponencie u mnie RS 2010 nie ma wartości RecvBufferSize i SendBufferSize które zostały opisane w poradniku na stronie czy są do niech jakieś alternatywne odniesienia ?