__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
dirList = new TStringList;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::DownloadFolder(TIdFTP *AFTP, UnicodeString ARemotePath, UnicodeString ALocalPath)
{
AFTP->ChangeDir( ARemotePath );
AFTP->List();
String iFileName = "";
for( int i = 0; i < AFTP->DirectoryListing->Count; i++ )
{
String dirItemType = AFTP->DirectoryListing->Items[i]->ItemType;
iFileName = AFTP->DirectoryListing->Items[i]->FileName;
if( dirItemType == ditFile )
{
AFTP->Get(ARemotePath + iFileName, ALocalPath + iFileName, true, true );
}
}
for( int i = 0; i < AFTP->DirectoryListing->Count; i++ )
{
String dirItemType = AFTP->DirectoryListing->Items[i]->ItemType;
iFileName = AFTP->DirectoryListing->Items[i]->FileName;
if( dirItemType == ditDirectory && iFileName != "." && iFileName != ".." )
{
ForceDirectories( ALocalPath + iFileName + "\\" );
dirList->Add( ARemotePath + iFileName + "/=" + ALocalPath + iFileName + "\\" );
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BeginFTPDownload(TIdFTP *AFTP, UnicodeString ARemotePath, UnicodeString ALocalPath)
{
dirList->Clear();
DownloadFolder( AFTP, ARemotePath, ALocalPath );
for( int i = 0; i < dirList->Count; i++ )
{
DownloadFolder( IdFTP1, dirList->Names[i], dirList->ValueFromIndex[i] );
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
IdFTP1->Connect(); /* połączenie z kontem - włączone autologowanie */
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{ /* uruchomienie pobierania plików */
BeginFTPDownload( IdFTP1, "/domains/programowanie.cal.pl/public_html/pliki/", "c:\\temp\\" );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::IdFTP1Status(TObject *ASender, const TIdStatus AStatus,
const UnicodeString AStatusText)
{
Memo1->Lines->Add( IntToStr(AStatus)+ ". " + AStatusText );
Application->ProcessMessages();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
IdFTP1->Disconnect();
delete dirList;
}
//---------------------------------------------------------------------------