Function DownloadFiles(Version,pfad :
String;
var ftp : TIdFTP;
var LStatus1,LStatus2 : TADVSmoothLabel;
var pb,pb2 : TADVProgressBar) : boolean;
var zielverzeichnis :
string;
dateiliste : TStringlist;
i : Integer;
begin
pb.position := 0;
pb2.Position := 0;
pb2.Visible := true;
LStatus2.Visible := true;
if FTP.Connected
then
ftp.Disconnect
else begin
FTP.Username := '
dein Accountname';
FTP.Password := '
dein Passwort';
FTP.Host := '
URL';
FTP.TransferType := ftBinary;
//ftASCII;
FTP.Connect;
FTP.ChangeDir('
updates');
FTP.ChangeDir(version);
FTP.ChangeDir(pfad);
zielverzeichnis := (extractfiledir(paramstr(0))+pfadinstall+'
\'+version+'
\'+pfad);
if not DirectoryExists(zielverzeichnis)
then ForceDirectories(zielverzeichnis);
dateiliste := Tstringlist.Create;
FTP.List(dateiliste,'
*.*',False);
pb.Max := dateiliste.Count;
dateiliste.SaveToFile(zielverzeichnis+'
\'+version+'
.txt');
//Dateiliste herunterladen
for i := 0
to dateiliste.Count - 1
do begin
StatusSchreiben(dateiliste[i],4,f_status.M_Status);
//ist eine Procedure die eine Infozeile in ein Memo schreibt
LStatus1.Caption.Text := '
Download Datei '+inttostr(i+1)+'
von '+inttostr(dateiliste.Count);
LStatus2.Caption.Text := '
Aktueller Download: '+ dateiliste[i] +'
('+inttostr(
FTP.Size(dateiliste[i]))+'
Bytes)';
PB2.Max :=
FTP.Size(dateiliste[i]);
FTP.Get(dateiliste[i],zielverzeichnis+'
\'+dateiliste[i],True);
//Dateiholen und überschreiben
pb.Position := i+1;
pb.Refresh;
end;
dateiliste.Free;
FTP.Disconnect;
end;
pb2.Visible := false;
LStatus2.Visible := false;
DownloadFiles := true;
end;
procedure TFMain.FTPWork(ASender: TObject; AWorkMode: TWorkMode;
AWorkCount: Int64);
begin
pb_3.Position := AWorkcount;
pb_3.Refresh;
end;
procedure TF_INUpdate.FTPWorkEnd(ASender: TObject; AWorkMode: TWorkMode);
begin
pb_3.Position := 0;
pb_3.Refresh;
end;
procedure TMain.bt_startenClick(Sender: TObject);
var DBVersionGefunden : boolean;
zielverzeichnis :
string;
begin
if DownloadFiles('
3730','
db',
ftp,L_Status_2,L_Status_3,pb_2,pb_3)
then begin
//...
end;
end;
end;