DllStructSetData
Устанавливает данные в элемент структуры.
DllStructSetData ( Struct, Element, value [, index ] )
Параметры
Struct | Структура возвращаемая функцией DllStructCreate(). |
Element |
Элемент структуры, к которому вы хотите получить доступ, отсчёт от 1 или имя элемента указанного в DllStructCreate(). |
value |
Новое значение, устанавливаемое в структуру. |
index |
[необязательный] Для элементов, которые являются массивом это определяет индекс, в который устанавливается значение, отсчёт от 1. Если параметр опущен или указано ключевое слово Default, тогда большинство значений по возможности будет установлено в элемент начиная с индекса 1 (полезно для быстрой установки строк). Не используется для элементов не являющихся массивом. |
Возвращаемое значение
Успех: | Возвращает значение, которое читается обратно из структуры. |
Ошибка: | Возвращает 0. |
@error: | 0 = нет ошибок. |
1 = Структура не является корректной структурой возвращённой функцией DllStructCreate(). | |
2 = Значение элемента выходит за пределы диапазона. | |
3 = Индекс выходит за пределы структуры. | |
4 = Неизвестный тип данных элемента | |
5 = Индекс <= 0. |
Примечания
Когда элемент char[n], byte[n] или ubyte[n] данные могут быть строкой, иначе должно быть число.См. также
DllStructCreate, DllStructGetData, DllStructGetSizeПример
; Local Const $tagSTRUCT = "int;ubyte;uint;char[128]" ; 3.3.6.1
; Local Const $tagSTRUCT = "struct;int;byte;uint;char[128];endstruct" ; 3.3.8.1, без имён элементов (полей) структуры
Local Const $tagSTRUCT = "struct;int var1;byte var2;uint var3;char var4[128];endstruct" ; 3.3.8.1, с именами элементов (полей) структуры
$tStruct = DllStructCreate($tagSTRUCT)
If @error Then
MsgBox(4096, "", "Ошибка создания структуры, @error = " & @error)
Exit
EndIf
#cs
Устанавливает данные в структуру (вид на языке Си)
struct.var1 = -1;
struct.var2 = 255;
struct.var3 = INT_MAX; -1 will be typecasted to (unsigned int)
strcpy(struct.var4,"Приветствие");
struct.var4[0] = 'п';
#ce
DllStructSetData($tStruct, 1, -1) ; или var1 вместо 1
DllStructSetData($tStruct, 'var2', 255) ; или 2 вместо var2
DllStructSetData($tStruct, 3, -1) ; или var3 вместо 3
DllStructSetData($tStruct, 4, "Приветствие") ; или var4 вместо 4
DllStructSetData($tStruct, 4, Asc("п"), 1)
; Отображает информацию в структуре
MsgBox(4096, "Сообщение", "Размер структуры: " & DllStructGetSize($tStruct) & @CRLF & _
"Указатель структуры: " & DllStructGetPtr($tStruct) & @CRLF & _
"Данные:" & @CRLF & _
DllStructGetData($tStruct, 1) & @CRLF & _
DllStructGetData($tStruct, 2) & @CRLF & _
DllStructGetData($tStruct, 3) & @CRLF & _
DllStructGetData($tStruct, 'var4'))
$tStruct = 0 ; Освобождает выделенную для структуры память, если потребуется.
; При завершении скрипта или функции (если локальная структура) освобождать не требуется.