AGB  ·  Datenschutz  ·  Impressum  







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

IdFTP + progressbar wie ?!

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

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

AW: IdFTP + progressbar wie ?!

  Alt 6. Nov 2013, 14:43
Hallo,

der Beitrag ist zwar schon etwas älter, aber ich hätte hierzu mal noch eine Frage...

Der Source funktioniert bei mir nur wie folgt:

Delphi-Quellcode:
//******************************************************************************
// FTP Download with Progressbar *
//******************************************************************************

procedure TForm1.Button20Click(Sender: TObject);

begin

  //Get File Size
  Try
    FTP.Host := 'Server';
    FTP.Username := 'User';
    FTP.Password := 'Password';
    FTP.Connect;
    FTP.ChangeDir('/Folder1/Folder2/');
    giFileSize := FTP.Size('setup.exe');
    FTP.Disconnect;
  Except
    FTP.Free;
    Exit;
  End;

  //Download File
  Try
    FTPDownload.Host := 'Server';
    FTPDownload.Username := 'User';
    FTPDownload.Password := 'Password';
    FTPDownload.Connect;
    FTPDownload.ChangeDir('/Folder1/Folder2/');
    FTPDownload.Get('setup.exe', 'C:\Temp\setup.exe', True);
    FTPDownload.Disconnect;
  Except
    FTPDownload.Free;
    Exit;
  End;

end;

procedure TForm1.FTPDownloadWorkBegin(ASender: TObject; AWorkMode: TWorkMode; AWorkCountMax: Int64);
begin
  with FTPProgress do
  begin
    Max := giFileSize;
    Position := 0;
    Visible := true;
  end;
end;

procedure TForm1.FTPDownloadWork(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Int64);
begin
  with FTPProgress do
    Position := Integer(AWorkCount);
end;

procedure TForm1.FTPDownloadWorkEnd(ASender: TObject; AWorkMode: TWorkMode);
begin
  with FTPProgress do
    Visible := false;
end;
Wie man sieht verwende ich im Moment zwei FTP Komponenten.
Dies liegt daran da ich die File Größe erst ermittle und dann über die zweite den Download Starte.
Ich habe erst versucht beides über eine FTP Komponente zu machen, aber da hat er mir dann beim File Size ermitteln die OnWork / OnBeforeWork Aktionen ausgeführt.

Meine Frage daher, kann man es steuern wann er die OnWork / OnBeforeWork Ereignisse aufruft oder nicht?
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.316 Beiträge
 
Delphi 12 Athens
 
#2

AW: IdFTP + progressbar wie ?!

  Alt 6. Nov 2013, 15:15
Du könntest natürlich die Events beim GetSize abhängen (z.B. FTP.DownloadWorkBegin:=nil; ) und beim get wieder anhängen (z.B. FTP.DownloadWorkBegin:=FTPDownloadWorkBegin; )
oder über eine Variable die ausgabe steuern (beim GetSize einen Boolean auf True setzen und in den Events if x then Exit; ).

AWorkCountMax hat dir nicht gefallen?
Delphi-Quellcode:
//******************************************************************************
// FTP Download with Progressbar *
//******************************************************************************

procedure TForm1.Button20Click(Sender: TObject);
begin
  Try
    FTPDownload.Host := 'Server';
    FTPDownload.Username := 'User';
    FTPDownload.Password := 'Password';
    FTPDownload.Connect;
    FTPDownload.ChangeDir('/Folder1/Folder2/');
    FTPDownload.Get('setup.exe', 'C:\Temp\setup.exe', True);
    FTPDownload.Disconnect;
  Except
    FTPDownload.Free; // wieso Free? (sei froh, daß dir TComponent die Form-Variable FTPDownload "zufällig" auf nil setzt, wenn sie published ist)
    Exit;
  End;

end;

procedure TForm1.FTPDownloadWorkBegin(ASender: TObject; AWorkMode: TWorkMode; AWorkCountMax: Int64);
begin
  with FTPProgress do
  begin
    Max := AWorkCountMax;
    Position := 0;
    Visible := true;
  end;
end;

procedure TForm1.FTPDownloadWork(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Int64);
begin
  with FTPProgress do
    Position := AWorkCount;
end;

procedure TForm1.FTPDownloadWorkEnd(ASender: TObject; AWorkMode: TWorkMode);
begin
  with FTPProgress do
    Visible := false;
end;
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 6. Nov 2013 um 15:17 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:01 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 by Thomas Breitkreuz