Progress von Download berechnen
Übersicht

streetcarpBetreff: Progress von Download berechnen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi,
Folgendes Problem.. Ich hatte vor eine Downloadfunktion für ein Programm zu schreiben, sie funktioniert zwar, jedoch bekomm ich den Code für den Progress/Fortschritt nicht gebastelt. ![]() Die Dateigröße der Onlinedatei hab ich über "Content-Length" im http request ermittelt und in der Variablen FILE_SIZE abgelegt. Theoretisch müsste man ja nur die Größe der Onlinedatei mit den Heruntergeladenen Bytes vergleichen und den Prozentsatz errechnen, aber leider weiß ich nicht, wie ich die Größe abfrage der Bytes die ich bereits geladen habe.. Ich habs mit Readavail(tcp) versucht, aber nichts hinbekommen. Hier der code: Code: [AUSKLAPPEN] file = WriteFile("wallpaper3.jpg") tcp = OpenTCPStream("www.aikido-verein-hannover.de",80) If tcp=0 Then Print "Verbindung fehlgeschlagen..." : WaitKey : End WriteLine tcp, "GET http://www.aikido-verein-hannover.de/img/wallpaper3.jpg HTTP/1.0" WriteLine tcp, "Host: www.aikido-verein-hannover.de" WriteLine tcp, "Useragent: Browser" WriteLine tcp, "Connection: close" WriteLine tcp, Chr$(10) ;Getting Filesize Repeat header$=ReadLine$(tcp) If Left$(header$,15)="Content-Length:" Then header_chars=Len(header$) FILE_SIZE=Right(header$,header_chars-16) Print "filesize:"+FILE_SIZE+" bytes" EndIf Until ReadLine$(tcp)="" ;Download file Repeat ;tcp_avail=ReadAvail(tcp) WriteByte file, ReadByte(tcp) Until Eof(tcp)=1 ;Close all streams CloseTCPStream tcp CloseFile file Print "download finish" WaitKey() End Wäre nett wenn Ihr mir helfen könntet. Danke. (PS. Ich hab schon alles im Forum/google,usw.. abgesucht aber nichts passendes speziell auf das Problem gefunden.) |
||
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
wenn du jedes byte einzeln in die datei schreibst kannst du doch einfach einen bytezähler ala count=count+1 machen. die prozentzahl wäre dann:
Code: [AUSKLAPPEN] p#=float(count)/float(FILE_SIZE)
|
||
streetcarp |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
oh stimmt ![]() funktioniert. Vielen Dank Dir!! |
||
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mit einer bank würde es aber viel schneller gehen (nur so btw) | ||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
streetcarp |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Jetzt steh ich vor einem neuem Problem..
In der Hauptschleife ist meine CPU-Auslastung 100%.. Delay und Waittimer machen die Schleife logischerweise zu langsam für den Download... Gibt es noch weitere Möglichkeiten den Code so zu bauen, dass die auslastung gering bleibt?? Mein Firefox läd ja auch nicht mit 100% cpu-last. Danke. (PS. die Bank hab ich eingebaut, Danke. Aber das Problem mit der CPU besteht weiterhin) |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mit Delay(1) in der Hauptschleife sinkt die belastung drastisch.
Ansonsten nein Und FF etc arbeiten auch mit Sprachen die darauf ausgelegt sind so etwas zu machen, du nicht, du arbeitest mit einer RAD Sprache die nicht auf Core Development ausgelegt ist, entsprechend "schwächer auf der Brust" ist sie, ist dafür auch beträchtlich einfacher zu nutzen |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
Siehe oben: mit einer Bank geht der Download fast so schnell wie mit einem Browser...
Allerdings kann man das nur machen, wenn die Dateigröße bekannt ist. Gruß, Smily041 Code: [AUSKLAPPEN] time1 = millisecs()
if downloadfile("/header/header.png", "www.blitzforum.de", "C:\header.png") print "erfolg" Else print "fehler" time2 = millisecs() Print "Zeit: " + (time2-time1) delay 5000 Function downloadfile(url$, host$, ziel$) tcp = OpenTCPStream(host$,80) If Not tcp Return 0 WriteLine tcp, "GET " + url$ + " HTTP/1.0" WriteLine tcp, "host: " + host WriteLine tcp, "" Repeat z$ = ReadLine(tcp) If Left(z$,16) = "Content-Length: " size = Mid$(z$,17) Until ReadLine(tcp) = "" Or Eof(tcp) If Eof(tcp) Return 0 Fileout = WriteFile(ziel$) If Not size Repeat WriteByte fileout, ReadByte(tcp) Until Eof(tcp) Else bank = CreateBank(size) ReadBytes bank, tcp, 0, size WriteBytes bank, fileout, 0, size FreeBank bank End if CloseFile fileout CloseTCPStream tcp Return 1 End function |
||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group