↑  ←  Описание функции


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 ; Освобождает выделенную для структуры память, если потребуется.
;  При завершении скрипта или функции (если локальная структура) освобождать не требуется.