Показать полную графическую версию : [решено] При посл.закачке 2х файлов через InetGet на 2ом файле всегда ошибка!
FlatX007
24-08-2009, 20:54
Вообщем должно закачатся последовательно 2 файла ... на 2ом файле всегда ошибка размера, даже если поменять функции местами.
Раньше работало :( а сейчас нехочет, что я сделал нетак ?
Я думаю в примере ненужно "назначать" переменные ... (ошибок в них нет я проверял)
If GUICtrlRead($Checkbox2) = 1 Then
$SizeNewVersionL = InetGetSize($Url & $NameNewVersionL)
InetGet($Url & $NameNewVersionL, $PachDirGameTempDir & "\" & $NameNewVersionL, 1, 1)
While @InetGetActive
$SizeDialogL = $SizeNewVersionL - @InetGetBytesRead
If $SizeDialogL = 0 Then $SizeDialogL = "OK"
TrayTip("Downloading : " & $NameNewVersionL, "Bytes = " & $SizeDialogL, 1, 1)
Sleep(250)
WEnd
If @InetGetBytesRead <> FileGetSize($PachDirGameTempDir & "\" & $NameNewVersionL) Then MsgBox(0, "L", "Ошибка!")
EndIf
If GUICtrlRead($Checkbox1) = 1 Then
$SizeNewVersionSXE = InetGetSize($Url & $NameNewVersionSXE)
InetGet($Url & $NameNewVersionSXE, $PachDirGameTempDir & "\" & $NameNewVersionSXE, 1, 1)
While @InetGetActive
$SizeDialogSXE = $SizeNewVersionSXE - @InetGetBytesRead
If $SizeDialogSXE = 0 Then $SizeDialogSXE = "OK"
TrayTip("Downloading : " & $NameNewVersionSXE, "Bytes = " & $SizeDialogSXE, 1, 1)
Sleep(250)
WEnd
If @InetGetBytesRead <> FileGetSize($PachDirGameTempDir & "\" & $NameNewVersionSXE) Then MsgBox(0, "sxe", "Ошибка!")
EndIf
ошибок в них нет я проверял »
Проверил, а потом обрезал скрипт? :read:
Скопируй то что в твоём посте и вставь в новый скрипт, будет оно работать? Правильно, не будет, и как теперь прикажешь воспроизвести твою ошибку?
Первое правило перед тем как создать новую тему с просьбой о помощи - написать для себя отдельный небольшой скрипт, воспроизводящий проблему.
FlatX007
25-08-2009, 12:36
Починил скрипт :) , удалил AutoIT Beta , и всё сразу заработало.
(но перед этим я снёс Win 7, и поставил ХРюшку - думал из за этого :) )
Ну вот видишь :) А я уж собирался позаимствовать мысличитатель :)
FlatX007,
Т.е для других эта тема бесполезна? Решения нет, как собственно и проблемы?
FlatX007
25-08-2009, 17:47
Как нет проблемы ...
Всё заработало после удаления Бэты! Решение есть удалить бэту ...
Не работает не на одной ...
autoit-v3.3.1.0-beta-setup.exe
autoit-v3.3.1.1-beta-setup.exe
У бэты проблемы с InetXXX
Особенно, если компилить полученный скрипт.
Как нет проблемы ...
Всё заработало после удаления Бэты »
Ну а где проблема? В чём она заключается? Это же не ясно...
Я предполагаю, что проблема в неправильном использовании функции Inet* в новой бета-версии, где эти функции сильно изменились. Перед тем как ставить новые версии, рекомендуется читать список изменении ;)
Однако для юзера который заашёл бы в эту тему, совсем небыло бы ясно в чём собственно проблема, и даже если есть решение, то не известно чему.
P.S
На будущее - вопрос нужно поставить так, чтобы он был понятен не только тебе, но и другим, а также упомянутая мной ранее заметка на счёт рабочего примера, это важно, в следующий раз тема с таким содержанием будет закрыта.
FlatX007
25-08-2009, 18:18
Бэта :
InetGet - работает прекрасно.
Мне кажется дело в макро @InetGetBytesRead - это макро неправильно передаёт колличество закаченых байт ПОСЛЕ закачки второго, третьего.... файла!!
Если скачивать один файл за время работы одного скрипта-программы то всё работает прекрасно.
Мактро @InetGetBytesRead - нет в SciTE в выпадающем списке, при компиляции постоянно ругается, типа неизвесное макро.
Такой ответ ждали :)
Вот тут ты и попался!
- Changed: Inet functions rewritten with the following additions and changes:
- Removed: Long deprecate URLDownloadToFile() alias for InetGet().
- Added: HttpSetUserAgent(), InetClose(), InetGetInfo() and InetRead() functions.
- Added: Multiple background downloads are now supported with InetGet().
- Added #408: New flag for ignoring SSL errors for HTTPS connections.
- Added #884: Better proxy support with mode 0.
- Added #949: The user-agent can be changed.
- Changed: InetGet() returns a handle which must be closed.
- Changed: @InetGetBytes, @InetGetActive and InetGet("abort") are deprecated and will be removed in the future.
Мне кажется дело в макро @InetGetBytesRead »
Вот чтобы не казалось, почитай список изменении (http://www.autoitscript.com/forum/index.php?showtopic=96752) в бета:
.....
- Added: HttpSetUserAgent(), InetClose(), InetGetInfo() and InetRead() functions.
- Added: Multiple background downloads are now supported with InetGet().
.....
- Changed: InetGet() returns a handle which must be closed.
- Changed: @InetGetBytes, @InetGetActive and InetGet("abort") are deprecated and will be removed in the future.
.....
FlatX007
26-08-2009, 06:48
Да причём тут список изменений в Бете ...
Я анализирую факты, файлы скачиваются, запускаются т.е. они не повреждены, насчёт @InetGetBytesRead я писал выше...
Если насчёт моего скрипта ...всё работает прекрасно если неделать вот этого!
If @InetGetBytesRead <> FileGetSize($PachDirGameTempDir & "\" & $NameNewVersionSXE) Then MsgBox(0, "sxe", "Ошибка!")
@InetGetBytesRead - это макро неправильно передаёт колличество загруженых байт, после скачки 2го файла. Незнаю как это связано с InetGet .. но факт остаётся фактом.
Так. Ты меня пугаешь. Сейчас распишу более подробно:
- Изменено: @InetGetBytes, @InetGetActive и InetGet("abort") являются устаревшими и будут удалены в будущем.
- Добавлено: несколько загрузок в фоне теперь возможны с помощью InetGet().
А теперь объясни мне, каким макаром @InetGetBytesRead должно угадаывать, к какому загружаемому файлу оно относится?
Два: теперь InetGet() возвращает хэндл, которой надо закрывать по окончании отработки функции.
Три: вместо @InetGetBytesRead теперь нужно использовать InetGetInfo(handle , 1)
Четыре: есть ошибка. В скомпилированном варианте эти функции нормально работать не будут. Можешь посмотреть на баг-трекере. Именно это я и имел ввиду, когда писал, что у бэты проблемы с InetGetXXX. В нескомпилированном варианте всё работает нормально.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2024, Jelsoft Enterprises Ltd.