Download mit idHTTP mit Fortschrittsanzeige?
-
Um deine nächste Frage vorwegzunehmen: wo prüft man üblicherweise, wieviel maximal zu tun ist? Genau, bevor man mit der Arbeit beginnt.
-
naja, du musst das verstehn, das ist kein eigentliches Projekt was ich hier mache, sondern nur eine Art Machbarkeitsstudie...
und btw:
Nachdem man mit IdHTTP->Get(URL) sich den inhalt geholt hat, kann man mit IdHTTP->Response->ContentLength sich wunderbar die Maximale Dateigröße besorgen.
Und das mit dem momentan übertragendem Volumen hab ich auch schon hinbekommen
-
Original erstellt von Professor:
Nachdem man mit IdHTTP->Get(URL) sich den inhalt geholt hat, kann man mit IdHTTP->Response->ContentLength sich wunderbar die Maximale Dateigröße besorgen.Was nützt dir das denn nach dem Download?
-
nein, mit Get startet man ja den DL und mit OnWork refreshe ich dann meine Fortschrittsanzeige, bis er halt fertig ist OnWorkEnd...
-
Und wann/wo holst du die ContentLength?
-
hier:
void __fastcall TfrmMain::IdHTTPWork(TObject *Sender, TWorkMode AWorkMode, const int AWorkCount) { labSize->Caption = AWorkCount; labSize->Repaint(); labProgress->Caption = FloatToStrF(AWorkCount * 100.0/IdHTTP->Response->ContentLength, ffFixed,15,1) + " % fertig"; labProgress->Repaint(); }
bzw: einmal direkt nach dem aufruf mit IdHTTP->Get(...)
-
Original erstellt von Professor:
einmal direkt nach dem aufruf mit IdHTTP->Get(...)... ich denke die Tatsache, dass du NACH Get() die Länge abholst dürfte das Problem sein. Korrigier mich wenn ich mich irre aber Get() blockiert doch bis die Seite unten ist?
-junix
-
naja nicht ganz, ich hole mir dir contentlength bei OnWorkBegin von TIdHTTP
-
Ah ok (: hatte ich was überlesen oder so (: Sorry.
-junix
-
Kein Wunder, dass du dass überlesen hast, das hatte Professor ja auch nirgendwo geschrieben.
ich hole mir dir contentlength bei OnWorkBegin von TIdHTTP
Auf OnWorkBegin wollte ich ja die ganze Zeit hinaus, warum benutzt du nicht einfach die dort zur Verfügung gestellte Variable AWorkCountMax?
-
void __fastcall TfrmMain::IdHTTPWork(TObject *Sender, TWorkMode AWorkMode,
const int AWorkCount)ich seh da keine AWorkCountMax...
-
OnWorkBegin
-
stimmt!
ey das hab ich total überlesen!