Hallo
habe ein script das mir eine exe runterladet als beispiel habe ich die autoit exe genommen normaler weise ist das eine exe unter 1 mb ![]()
also
wen man start drückt ladet es das script runter aber bei der autoit.exe läd es nichtmal bis zur hälfte und dann ist es fertig und bei der unter 1 mb exe ladet das ding nichtmal ![]()
was mache ich falsch
Spoiler anzeigen
#include <Array.au3>
#include <GUIConstantsEx.au3>
Global $averagearr[1], $buffer = 0,$iFileSize
[/autoit] [autoit][/autoit] [autoit]$Form1 = GUICreate("test", 291, 133, 447, 275)
$Label1 = GUICtrlCreateLabel("test", 96, 8, 99, 17)
$Progress1 = GUICtrlCreateProgress(8, 32, 278, 25)
$Label2 = GUICtrlCreateLabel("Zeit:", 16, 72, 97, 17)
$Label3 = GUICtrlCreateLabel("KB/s", 144, 72, 132, 17)
$Button1 = GUICtrlCreateButton("Start", 16, 104, 75, 25, 0)
$Button2 = GUICtrlCreateButton("Exit", 184, 104, 75, 25, 0)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
Download ()
Case $Button2
Exit
EndSwitch
WEnd
Func Download ()
[/autoit] [autoit][/autoit] [autoit]$speedaktual = 2
; $speedaktual = 1
$url = "http://www.autoitscript.com/cgi-bin/getfile.pl?autoit3/autoit-v3-setup.exe"
Global $iFileSize = InetGetSize($url)
InetGet($url, "test.exe", 1, 1)
$time = TimerInit()
While @InetGetActive
$iLastKbits = @InetGetBytesRead / 1024
Sleep($speedaktual * 100)
$iNewKbits = @InetGetBytesRead / 1024
$speed = ($iNewKbits - $iLastKbits) / ($speedaktual / 10)
$iPercent = Round(@InetGetBytesRead / $iFileSize * 100)
GUICtrlSetData ($Progress1,$iPercent)
GUICtrlSetData ($Label2,"Zeit: " & _average($speed) & " sec")
GUICtrlSetData ($Label3,$speed & ";KB/s")
; ProgressSet($iPercent, " Noch " & _average($speed) _ ; <-- hier übergabeparameter
; & " sec ; " & ' ' & $speed & ' Kb/s')
WEnd
Exit
EndFunc
Func _average($a) ; average (eng.) = durchschnitt
If $a <> 0 Then ; wenn der Übergabeparameter $a (= geschwindigkeit) <> 0 ist, dann
_ArrayAdd($averagearr, $a) ; aktuelle Geschwindigkeit wird in ein Array geschrieben
For $i = 1 To UBound($averagearr) - 1
$buffer += $averagearr[$i] ; alle Werte im Array werden zueinander addiert
Next
$buffer /= UBound($averagearr) - 1 ; Durchschnitt der Addierten Werte wird ausgerechnet
$buffer2 = $buffer ; <-- könnte man vielleicht schöner machen, $buffer muss vorm return geleert werden, deshalb $buffer2
$buffer = 0 ; wie gesagt, buffer muss geleert werden ...
Return Round((($iFileSize - @InetGetBytesRead) / 1024) / $buffer2) ; die Formel lautet: v = kb/s , also s = kb/v
; die kb sind die noch verbleibenden Kbyte.
; Die Geschwindigkeit ist schon ausgerechnet (Durchschnitt)
EndIf
EndFunc ;==>_average