Entwickler-Ecke

Internet / Netzwerk - Downloadzeit ermitteln und in Label anzeigen


kaschte - Do 25.05.06 14:30
Titel: Downloadzeit ermitteln und in Label anzeigen
Also ich habe n kleines Programm geschrieben das nach Eingabe der Downloadurl und des Zielpfades auf Knopfdruck eine Datei herunterlädt. Jetzt möchte ich aber, dass in einem Label die Downloadzeit + die Prozentangabe angezeigt wird (Sollte auf die Sekunde genau sein). Leider habe ich keine Ahnung wie ich dies anstellen soll.


Narses - Do 25.05.06 23:15

Moin und :welcome: im Forum!

user profile iconkaschte hat folgendes geschrieben:
Jetzt möchte ich aber, dass in einem Label die Downloadzeit + die Prozentangabe angezeigt wird (Sollte auf die Sekunde genau sein).

Ganz einfach: du ziehst eine Kompo vom Typ TWahrsagen (download von http://www.zigeuner.ru) auf das Formular und weist der Eigenschaft Wahrsagen1.DownloadURL den Link zu, dann kannst du in Wahrsagen1.ExaktesDownloadende Datum und Uhrzeit abfragen, wann der Download fertig ist. ;) (sorry, aber der mußte jetzt mal raus)

Nein, im ernst, wie willst du das denn genau vorhersagen? Du kannst doch gar nicht wissen, ob der Server, der ISP oder dein eigener PC nicht irgendwelche Probleme hat und Verzögerungen verursacht... :roll: ;)

Ansatz: Im ButtonClick-Handler machst du:

Delphi-Quelltext
1:
TimeStamp := GetTickCount; // liefert die Systemzeit in Millisekunden                    

Wenn der Download beendet ist, kannst du dmit:

Delphi-Quelltext
1:
TimeStamp := GetTickCount -TimeStamp; // Zeit in Millisekunden, die der Download gebraucht hat                    

bestimmen, wie lange dieser Download gedauert hat. Daraus und aus der Dateigröße kannst du nun die Downloadrate berechnen.

Wenn du nun ein weiteres Files runterladen willst, kannst du mit der Downloadrate und der Dateigröße des neuen Files auch etwa die voraussichtliche Downloadzeit berechnen.

Wie du damit dein Problem löst, ist jetzt wiederum dein Problem. ;)

cu
Narses


kaschte - Fr 26.05.06 08:23

Natürlich soll die Anzeige laufend aktualisiert werden. Also quasi so wie bei einem Browser. Ich schau mir aber mal dein Zeugs an, vielleicht komm ich ja dann selber drauf (irgendwie die Grösse und dann immer die Downloadgeschwindigkeit abziehen?)


jasocul - Fr 26.05.06 08:46

Einmal zusammengefasst:
- Dateigröße ermitteln, falls möglich (wenn nicht kannst du das sowieso vergessen)
- Startzeit festhalten
- Starten
- Ermitteln, wieviel Zeit vergangen ist
- Ermitteln, wieviel schon runtergeladen ist
- Aus diesen Werten kannst du berechnen, wieviel Zeit noch für benötigt wird (Dreisatz)


kaschte - Fr 26.05.06 08:50

Ok, werd ich mir mal anschauen