Что нового

Номер ошибки GUICtrlCreateIcon

winkot

Новичок
Сообщения
169
Репутация
0
И в русской и в английской справке указано, что при ошибке GUICtrlCreateIcon возвращает 0. Но у меня возвращает 1, а при правильной работе error=0. Почему так?
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
При успешном создании элемента возвращается id, число не равное нулю. При ошибке, естественно, 0
 

Oki

Продвинутый
Сообщения
452
Репутация
62
Возможно продемонстрировать скрипт, который можно повторить, чтобы убедиться в происходящем? По справке, действительно, такого не должно происходить.
Сообщение автоматически объединено:

а при правильной работе error=0
Минутку. Что имеется в виду? Что возвращаемое значение проверяется через макрокоманду @error? С этой функцией, согласно справке, следует это делать не так, а просто сразу же присваивать результат функции (при её вызове) переменной, значение которой будет обозначенным в справке показателем.
Код:
$idIcon = GUICtrlCreateIcon() ; В вызов функции внести требуемые параметры.
MsgBox(4096, "", $idIcon)
 
Последнее редактирование:

RaZum

Знающий
Сообщения
78
Репутация
14
Про макрос @error в справке ничего ненашел.
Если под "error" имеется ввиду "failure", то при неудаче функция возвращает 0.
В случае удачи, возвращает ID.
Проверял разные варианты, и всегда при неудаче 0, в том числе и при отсутствии GUI.
Проверить легко.
Код:
GUICreate ("")
GuiSetState ()
$icon = -1 ; -50 - прозрачная, -1000 - отсутствует
$ID = GUICtrlCreateIcon ("shell32.dll", $icon, -1, -1)
MsgBox (0, "", "ID = " & $ID)
Возможно функция возвращает ID, а изображение состоит только из прозрачного слоя.
 
Последнее редактирование:
Автор
W

winkot

Новичок
Сообщения
169
Репутация
0
Возможно продемонстрировать скрипт, который можно повторить, чтобы убедиться в происходящем?
Код:
$Icon = GUICtrlCreateIcon(@ScriptDir&'\Test.ico', 3, -1, -1, 10, 10)
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $Icon = ' & $Icon & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console


Получаю ответ:
Код:
@@ Debug(3) : $Icon = 0
>Error code: 1


Хотя, я уже догадываюсь, что
Код:
$Icon = 0
и есть код ошибки. Но, что же в таком случае?
Код:
>Error code: 1
 

RaZum

Знающий
Сообщения
78
Репутация
14
Это описано в разделе справки "Примечания по использованию функций" (Function Notes)
 

Oki

Продвинутый
Сообщения
452
Репутация
62
Код:
$Icon = GUICtrlCreateIcon(@ScriptDir&'\Test.ico', 3, -1, -1, 10, 10)
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $Icon = ' & $Icon & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console


Получаю ответ:
Код:
@@ Debug(3) : $Icon = 0
>Error code: 1


Хотя, я уже догадываюсь, что
Код:
$Icon = 0
и есть код ошибки. Но, что же в таком случае?
Код:
>Error code: 1
В этом скрипте тому, о чём говорится в справке, соответствует именно значение переменной $Icon. Значение, выдываемое макрокомандой @error, в справке к этой функции не описано. Очевидно, автор функции решил организовать значение для этой макрокоманды тоже для того, чтобы следовать стандарту (при котором нулевое значение этой макрокоманды соответствует отсутствию ошибки), который в данном случае необязателен (ввиду полной информативности возвращаемого значения функции) и потому не упомянут в справке к конкретной функции.
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
автор функции решил организовать значение для этой макрокоманды
Все встроенные функции AutoIt возвращают значение и устанавливают @error. Даже если это не указано в справке.
Код:
$v = Sleep(111)
ConsoleWrite(@error & ":" & $v & @CRLF) ; 0:1
 
Верх