![]() |
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 |
Re: ProgressBar für Download?
Verwende mal die Suche, du wirst bestimmt fündig.
|
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: ![]() Schönen Gruss PigfaceJoe |
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.
|
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 |
Re: ProgressBar für Download?
Bei den Indys sind umfangreiche Demos dabei.
|
Re: ProgressBar für Download?
Zitat:
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:
So soweit dazu, jetz dein Fortschrittsbalken.
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; 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:
Das wars im Prinzip schon, die Datei befindet sich dann im Programmvertzecihnis und heisst Bild.jpg.
progressbar1.Position:=AWorkCount;
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 |
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 |
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 |
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 10:21 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