Autor Beitrag
XCoder
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36

Win XP
D7 Prof
BeitragVerfasst: Mo 03.03.03 02:04 
Hallo

Ich würde gerne einen Download Manager programmieren doch ich stehe vor einem großen problem wie Kann ich daten aus dem internet so laden das ich auch zum beispiel den Download anhalten kann und später vortsetzen?

Und wie kann ich anzeigen wie weit der download ist?

Danke :)
M4EiB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: Di 04.03.03 16:50 
Hi

Um einen Download zu Resumen, mußt du die Größe an der du fortsetzen willst im Request im Range-Teil mitschicken.
mit der HTTP-Komponete von INDY geht das so
ausblenden Quelltext
1:
 idhttp1.Request.ContentRangeStart:=dateigröße;					

Wenn du es anders machen willst, solltest du entweder irgendwo den Range-Start setzen können, oder du mußt manuell in den Header
ausblenden Quelltext
1:
Range: bytes=dateigröße-					

einfügen.

Aber nicht jeder Server unterstüzt das Resumen. Um zu Überprüfen, ob er wirklich ab der angegebenen Größe sendet und nicht ab Dateianfang, mußt du in der Antwort den Range-Teil prüfen.
Mit INDY ist das wieder einfach
ausblenden Quelltext
1:
 idhttp1.Response.ContentRangeStart					

Dort steht ab welchen byte er zu dir schickt.
Am besten wäre natürlich, wenn man das in ein ONHeaderReceived-Event einbaut. Da mußt du aber wahrscheinlich selbst Hand anlegen.

Den Download-Fortschritt kannst du leicht mit den ONWork Event in der INDY-Komponente darstellen:
AWorkCount ist das bis jetzt Übertragenen
idhttp1.Response.ContentLength ist die Gesamtgröße des zu Übertragendem. Falls du den Download also fortsetzt, ist das nicht mehr die Dateigröße!