Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi ProgressBar für Download? (https://www.delphipraxis.net/97116-progressbar-fuer-download.html)

ptown67 5. Aug 2007 00:14


ProgressBar für Download?
 
Hallo alle zusammen!

Ich habe mir ein Tool angefertigt, welches mir einzelne Dateien meiner WebSite
downloadet, um diese mit dem Tool zu konfigurieren.
Das ganze habe ich mit der Unit InetTools gemacht und läde mir dadurch meine
Dateien per FTP auf meinen Rechner. Meine Frage:

Wie kann ich auf meinem Tool eine ProgressBar anzeigen lassen, wie weit der
Download fortgeschritten ist?

Es ist bestimmt eine simple Sache, jedoch bin ich immer noch ein Anfänger in
Delphi. Aber es heißt ja immer so schön, niemals aufgeben...

Vielleicht kann mir ja jemand einen nützlichen Tipp geben :coder2:

Gruß an alle - Freeman

turboPASCAL 5. Aug 2007 00:22

Re: ProgressBar für Download?
 
Verwende mal die Suche, du wirst bestimmt fündig.

PigfaceJoe 5. Aug 2007 01:04

Re: ProgressBar für Download?
 
Hi freeman.bytes !

Also ich kann dir da nur die Indy Komponenten ans Herz legen, ich verwende sie immer für solche Zwecke.
Dort gibts ne Komponente IdHTTP die ein hat ein OnWork, OnWorkBegin und ein OnWorkEnd-Ereignis.
Im OnWorkBegin schreibste dann progrssbar1.max:=AWorkCountMax;
Im OnWork schreibste entsprechend: progressbar1.position:=AWorkCount;
Das geht (falls du was mit FTP machen willst) entsprechend auch mit der IdFTP komponente.
Ach ja: Damit dein Programm nicht "einfriert" zieh noch die IdAntiFreeze aus der Sparte "IndyMisc" auf dein Formular und setze OnlyWhenIdle auf false und IdleTimeout auf 10 .

Die indys findest du als download hier: http://www.indyproject.org/download/Files/Indy9.html

Schönen Gruss
PigfaceJoe

Luckie 5. Aug 2007 01:20

Re: ProgressBar für Download?
 
Die INetTools kenn eich nicht. Aber sie werden auch ein Ereignis, wie die Indys haben, welches beim Download ausgelöst wird.

ptown67 5. Aug 2007 01:30

Re: ProgressBar für Download?
 
Danke für die schnellen Antworten (heute Nacht noch) :)

Das mit den Indys hört sich sehr gut an. Jedoch habe ich leider
noch nie mit Indy programmiert.

Kann mir jemand dazu vielleicht auch gleich ein Codebeispiel für
den Download mit Indy geben?

:thumb: THX

Luckie 5. Aug 2007 02:07

Re: ProgressBar für Download?
 
Bei den Indys sind umfangreiche Demos dabei.

PigfaceJoe 5. Aug 2007 16:28

Re: ProgressBar für Download?
 
Zitat:

Kann mir jemand dazu vielleicht auch gleich ein Codebeispiel für
den Download mit Indy geben?
Hi,
Jap kann ich: Musst halt indy herunterladen für deine Delphi Version und installieren. Dann ziehste die Komponente IdHTTP und ein Button aufs Formular und downloaden kannste dann so (ins OnClick Ereignis vom Button):
Delphi-Quellcode:
var Ziel, URL:string;
lStream: TFileStream;
begin

URl:='http://haumichblau-ichweiss-nix.de/bild.jpg' ;
Ziel:=ExtractFilePath(Paramstr(0))+'Bild.jpg';
try
 lStream:=TFileStream.Create(Ziel, fmCreate or fmShareDenyNone);
 try
   idHTTP1.Get(URL, lStream);
finally
lStream.Free;
end;
So soweit dazu, jetz dein Fortschrittsbalken.
Also man nehme:
-Eine ProgressBar

Dann einfach die IdHTTP Kompo anklicken und in die Sparte Ereignisse wechseln. Da dann doppelklick auf "OnWorkBegin" und folgendes in die Procedure schreiben:
Delphi-Quellcode:
progressbar1.Max:=AWorkCountMax;

so nun nochn doppelklick auf "OnWork" und dann kommt folgendes da rein:
Delphi-Quellcode:
progressbar1.Position:=AWorkCount;
Das wars im Prinzip schon, die Datei befindet sich dann im Programmvertzecihnis und heisst Bild.jpg.
Ach ja: Gegen das "Einfrieren" vom Programm schreibste entweder Application.ProcessMessages noch ins OnWork ereignis oder (die folgende Variante finde ich persönlich effektiver) du ziehst die IdAntiFreeze Kompo aus der Sparte "Indy Misc" aufs Formular und setzt dort OnlyWhenIdle auf false und Idletimeout auf 1.

So, ich hoffe ich konnte dir helfen,
Gruss Pigface Joe

ptown67 5. Aug 2007 20:59

Re: ProgressBar für Download?
 
Danke für die vielen Tipps!

Am besten hat mir PigfaceJoe helfen können. Nach seiner Methode, hab ich das ganze zum Laufen bringen können. RESPEKT! Denn ich habe gelesen, dass er erst 15 Jahre alt ist...

Gruß an Euch alle! Freeman

o0o 11. Aug 2007 09:04

Re: ProgressBar für Download?
 
geil:D

sowas habe ich schon lange gesucht:)

jemand noch ne idee wie man da noch ne prozent und speedanzeige dazu macht^^
dann ises perfekt :???:

o0o

PigfaceJoe 11. Aug 2007 11:02

Re: ProgressBar für Download?
 
Hi,
du könntest einfach anstatt der ProgressBar die Komponente Gauge aus der Sparte "Beispiele" nehmen. Die hat eine Prozentangabe sozusagen "OnBoard". Das mit der Geschwindigkeit kannste so lösen:
-Anfangs die Gesamtgrösse des Downloads in KB nehmen[idhttp1.Response.ContentStream.Size div 1024]
-Nach 1 sek. dann die empfangene Grösse in KB [AWorkCount div 1024]
- Nach 5 sek. dann wieder die empfangene Grösse[AWorkCount div 1024]
- Differenz bilden und du hast die (relativ ungenaue) Geschwindigkeit in 4 sek.
- Dann teilste die durch 4 und hast die Geschwindigkeit pro sekunde.

Ist aber alles ein bisschen ungenau, ne bessere Möglichkeit kenne ich nicht.
Kannst natürlich auch mit den obigen Infos ne eigen Prozentangabe erstellen...


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:27 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz