AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi IdFTP + progressbar wie ?!

IdFTP + progressbar wie ?!

Ein Thema von ghost007 · begonnen am 8. Feb 2006 · letzter Beitrag vom 6. Nov 2013
 
Benutzerbild von TheProfi
TheProfi

Registriert seit: 30. Mai 2005
Ort: Emden
42 Beiträge
 
Delphi 10.3 Rio
 
#16

Re: IdFTP + progressbar wie ?!

  Alt 4. Mai 2010, 13:51
Hi,

ich habs so gelöst und es geht. Dieser Programmcode stammt von meinem Programmupdater (D2010, akt. Indy 10.5.7).
Mit dieser Function lade ich alle Dateien runter die in einem bestimmten Verzeichnis liegen.

Version : ist halt ein Verzeichnis auf dem FTPServer
Pfad : ist halt ein weiteres Verzeichnis auf dem FTPServer
LStatus1 : gibt die als Text "Download Datei x von y"
LStatus2 : gibt die aktuelle Datei mit Dateigöße zurück
PB : 0 bis Anzahl Dateien im Verzeichnis
PB2 : aktueller Downloadverlauf der jeweiligen Datei

Delphi-Quellcode:
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;
Man kanns noch optimieren. Wer Ideen hat immer gerne.
Georg Reimann
------------------------------------------------------
Sicher ist nur eines, dass nichts sicher ist...
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz