Entwickler-Ecke

Internet / Netzwerk - Fortschritt anzeigen bei Verbindung per IdHTTP


Annonym - Sa 25.01.03 21:40
Titel: Fortschritt anzeigen bei Verbindung per IdHTTP
Hi ich ruf mit delphi ein php script per IdHTTP.Get auf. Ich will dem user nun eine fortschrittsanzeige geben. wie könnte man das machen? ich rufe das script einmal auf, aber das dauert ein bisschen bis alles fertig ist.


UGrohne - Sa 25.01.03 22:21

Die Frage ist, ob es solange braucht, bis die Daten aus dem internet übertragen worden sind, oder ob das an der Ausfphrungsdauer des PHP-Skriptes liegt. Bei ersterem gibt es ein Ereignis, mit dem Du die Datenübertragung auslesen kannst. Die komponente kann auch die Größe der zu ladenden Daten zurückgeben. Damit kannst DU dann eine ProgressBar steuern.

Bei zweiterem hast Du mit der Komponente keine Chance, da müsste dann das PHP-Skript für eine Fortschrittsanzeige sorgen.

Gruß


matze - So 26.01.03 12:09

doch du hast eine chance:

schau dir mal bei der INDY kompo die ereignisse ONworkBegin OnWork und OnWorkEnd an !!!

ONworkbegin übergibt dir einen zahlenwert. diesen setzt du bei eiern progressbar als MAX !!! und dann im OnWork bekommst du auch inner einen integer zurück, den du als position der progressbar setzt !!

Fertig !!


UGrohne - So 26.01.03 12:55

Aber bei der Ausführungsdauer haste auf keinen Fall ne Chance, das mit ner Progressbar zu machen, denn woher willste wissen, wie lange der Server braucht, um Deine Ergebnisse zusammenzustellen? Ich bin mir auch nicht sicher, ob OnWorkBegin nicht den Anfang des Datentransfers kennzeichnet, OnWork macht das auf jeden Fall....

Also funktioniert es nur bei Datenübertragung und die beginnt erst, wenn das PHP-Skript durch ist.

Gruß


matze - So 26.01.03 13:00

oha... ja da hst du recht !!!

aber die frage ist nicht wirklich eindeutuig gestellt !!! ich dachet nämlich er will eine Download anzeige !


UGrohne - So 26.01.03 15:27

matze hat folgendes geschrieben:

aber die frage ist nicht wirklich eindeutuig gestellt !!! ich dachet nämlich er will eine Download anzeige !


Stimmt, deswegen hab ich auch zu beiden Sachen was gesagt. Also wenn es eine Download anzeige werden soll, dann machst Du das so:
Ich hab in dem folgenden Beispiel ein Label und einm Gauge. In das Label wird die downgeloadete (was für ein bescheidenes Wort *g*) Kapazität angezeigt in kB. Das Gauge macht das ganze in Prozent.


Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure Tmainform.IdHTTPWork(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
begin
Label6.Caption:=idHttp.url.Document+' ('+inttostr(AWorkCount div 1024)+' kB von '+inttostr(IdHTTP.Response.ContentStream.Size div 1024)+' kB)';
Gauge1.Progress:=AWorkCount*100 div IdHTTP.Response.ContentStream.Size;
application.ProcessMessages;
end;


Achja, das ganze steht im Ereignis OnWork der IdHTTP-Kompo.

Gruß