Что нового

[Баг] DllStructSetData() - возврат ошибки 2

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
По идее (и по справке) следующий код должен вернуть флаг @error со значением 2, но не возвращает.
Код:
Local $tByte = DllStructCreate('byte')
DllStructSetData($tByte, 1, 300)
ConsoleWrite('@error: ' & @error & @LF)
ConsoleWrite('value: ' & DllStructGetData($tByte, 1) & @LF)
Проверял в версиях 3.3.6.1, 3.3.8.1, 3.3.12.0.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
А вот и нет. В элемент структуры должен быть помещен старший байт слова и без всяких проверок (и это правильно). Ошибка 2 возвращается, если порядковый номер элемента находится за допустимыми пределами или его имя не существует.

Код:
DllStructSetData($tByte, 2, 300)


Ошибка 3 возвращается, когда указан неверный индекс элемента.

Код:
DllStructSetData($tByte, 1, 300, 2)


Просто в русской справке неточный перевод.
 
Автор
madmasles

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Yashied [?]
В элемент структуры должен быть помещен старший байт слова и без всяких проверок
Не знал, спасибо.

в русской справке неточный перевод.
ИМХО, в ней переведено то, что написано в английской, так что надо и в английской уточнить (разжевать).
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
madmasles сказал(а):
ИМХО, в ней переведено то, что написано в английской, так что надо и в английской уточнить (разжевать).
В английской (слова "value" нет):

"Element out of range or unknown."

В русской:

"Значение элемента выходит за пределы диапазона."


Добавлено:
Сообщение автоматически объединено:

Кстати, на ошибку 3 ("Индекс выходит за пределы структуры.") тоже неверный перевод. Причем здесь структура?
 
Верх