Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] При посл.закачке 2х файлов через InetGet на 2ом файле всегда ошибка! (http://forum.oszone.net/showthread.php?t=148774)

FlatX007 24-08-2009 20:54 1202194

При посл.закачке 2х файлов через InetGet на 2ом файле всегда ошибка!
 
Вообщем должно закачатся последовательно 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


Creat0R 24-08-2009 23:53 1202313

Цитата:

Цитата FlatX007
ошибок в них нет я проверял »

Проверил, а потом обрезал скрипт? :read:

Скопируй то что в твоём посте и вставь в новый скрипт, будет оно работать? Правильно, не будет, и как теперь прикажешь воспроизвести твою ошибку?

Первое правило перед тем как создать новую тему с просьбой о помощи - написать для себя отдельный небольшой скрипт, воспроизводящий проблему.

FlatX007 25-08-2009 12:36 1202683

Починил скрипт :) , удалил AutoIT Beta , и всё сразу заработало.
(но перед этим я снёс Win 7, и поставил ХРюшку - думал из за этого :) )

Medic84 25-08-2009 12:40 1202686

Ну вот видишь :) А я уж собирался позаимствовать мысличитатель :)

Creat0R 25-08-2009 17:08 1202924

FlatX007,
Т.е для других эта тема бесполезна? Решения нет, как собственно и проблемы?

FlatX007 25-08-2009 17:47 1202965

Как нет проблемы ...
Всё заработало после удаления Бэты! Решение есть удалить бэту ...

Не работает не на одной ...
autoit-v3.3.1.0-beta-setup.exe
autoit-v3.3.1.1-beta-setup.exe

SyDr 25-08-2009 17:53 1202973

У бэты проблемы с InetXXX
Особенно, если компилить полученный скрипт.

Creat0R 25-08-2009 17:55 1202977

Цитата:

Цитата FlatX007
Как нет проблемы ...
Всё заработало после удаления Бэты »

Ну а где проблема? В чём она заключается? Это же не ясно...

Я предполагаю, что проблема в неправильном использовании функции Inet* в новой бета-версии, где эти функции сильно изменились. Перед тем как ставить новые версии, рекомендуется читать список изменении ;)

Однако для юзера который заашёл бы в эту тему, совсем небыло бы ясно в чём собственно проблема, и даже если есть решение, то не известно чему.

P.S
На будущее - вопрос нужно поставить так, чтобы он был понятен не только тебе, но и другим, а также упомянутая мной ранее заметка на счёт рабочего примера, это важно, в следующий раз тема с таким содержанием будет закрыта.

FlatX007 25-08-2009 18:18 1203001

Бэта :

InetGet - работает прекрасно.

Мне кажется дело в макро @InetGetBytesRead - это макро неправильно передаёт колличество закаченых байт ПОСЛЕ закачки второго, третьего.... файла!!
Если скачивать один файл за время работы одного скрипта-программы то всё работает прекрасно.

Мактро @InetGetBytesRead - нет в SciTE в выпадающем списке, при компиляции постоянно ругается, типа неизвесное макро.

Такой ответ ждали :)

SyDr 25-08-2009 18:33 1203011

Вот тут ты и попался!

Код:

- 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.


Creat0R 25-08-2009 18:33 1203012

Цитата:

Цитата FlatX007
Мне кажется дело в макро @InetGetBytesRead »

Вот чтобы не казалось, почитай список изменении в бета:

Цитата:

.....
- 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 1203395

Да причём тут список изменений в Бете ...
Я анализирую факты, файлы скачиваются, запускаются т.е. они не повреждены, насчёт @InetGetBytesRead я писал выше...

Если насчёт моего скрипта ...всё работает прекрасно если неделать вот этого!
Код:

If @InetGetBytesRead <> FileGetSize($PachDirGameTempDir & "\" & $NameNewVersionSXE) Then MsgBox(0, "sxe", "Ошибка!")
@InetGetBytesRead - это макро неправильно передаёт колличество загруженых байт, после скачки 2го файла. Незнаю как это связано с InetGet .. но факт остаётся фактом.

SyDr 26-08-2009 10:03 1203501

Так. Ты меня пугаешь. Сейчас распишу более подробно:

- Изменено: @InetGetBytes, @InetGetActive и InetGet("abort") являются устаревшими и будут удалены в будущем.
- Добавлено: несколько загрузок в фоне теперь возможны с помощью InetGet().

А теперь объясни мне, каким макаром @InetGetBytesRead должно угадаывать, к какому загружаемому файлу оно относится?
Два: теперь InetGet() возвращает хэндл, которой надо закрывать по окончании отработки функции.
Три: вместо @InetGetBytesRead теперь нужно использовать InetGetInfo(handle , 1)
Четыре: есть ошибка. В скомпилированном варианте эти функции нормально работать не будут. Можешь посмотреть на баг-трекере. Именно это я и имел ввиду, когда писал, что у бэты проблемы с InetGetXXX. В нескомпилированном варианте всё работает нормально.


Время: 09:35.

Время: 09:35.
© OSzone.net 2001-