amel27
Цитата:
текущую скорость удобней измерять через AdLib():
|
Не всегда, а что если в скрипте уже используется Adlib для других целей?
Хотя это можно совмещать... но почему бы не поместить функцию в цикл, и передавать ей как параметр чтение байтов, и возвращать с неё данные о скорости? это мне кажется лучший вариант...
Код:
Global $InetSpeed = 0, $InetGetBytesRead = 0, $InetTimeStamp = 0, $begin = TimerInit()
InetGet("http://www.autoitscript.com/cgi-bin/getfile.pl?autoit3/autoit-v3.2.4.4-setup.exe", "test.exe", 1, 1)
While @InetGetActive
Sleep(200)
$Bytes = @InetGetBytesRead
$InetSpeed = _InetGetSpeed($Bytes)
$AverageSpeed = $Bytes*1000 / TimerDiff($begin)
TrayTip("Downloading", "Speed = " & Round($InetSpeed/1024, 1), 10, 16)
Wend
MsgBox(0, "", "Avarage speed is: " & Round($AverageSpeed/1024, 1))
Func _InetGetSpeed($Bytes)
If @InetGetActive Then
If $InetTimeStamp Then
Local $Ticks = TimerDiff($InetTimeStamp)
If $Ticks > 0 Then $InetSpeed = ($Bytes-$InetGetBytesRead)*1000 / $Ticks
EndIf
$InetGetBytesRead = $Bytes
$InetTimeStamp = TimerInit()
Else
$InetTimeStamp = 0
$InetGetBytesRead = 0
$InetSpeed = 0
EndIf
Return $InetSpeed
EndFunc
Остаётся один главный вопрос - Насколько это точный подсчёт? и можно ли “доверять” этим данным?
Спасибо за примеры, вроде всё работает как надо
.
P.S
А среднюю скорость мне нужно не в цикле отображать, а подсчитать её для конечного вывода (чтобы показать юзеру с какой скоростью (средней) закаивался файл за весь промежуток закачки).
Diamond
По теме словарей (Dictionary):
http://www.autoitscript.com/forum/in...6entry352256