Главная

Назад к списку функции

 

 

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] данные могут быть строкой, иначе должно быть число.

См. также

DllStructCreateDllStructGetDataDllStructGetSize

Пример

 

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

Источник: http://dayzev.ucoz.ru/
Категория: Описание функций AutoIt Добавил: Grek (05.01.2015) | | Теги: DllStructSetData
Всего комментариев: 0