Autor Beitrag
Annonym
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Sa 25.01.03 21:40 
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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: 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 !!

_________________
In the beginning was the word.
And the word was content-type: text/plain.
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: 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 !

_________________
In the beginning was the word.
And the word was content-type: text/plain.
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: 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.

ausblenden 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ß