DllStructGetSize
Возвращает размер структуры в байтах.
DllStructGetSize ( Struct )
Параметры
Struct | Структура возвращаемая функцией DllStructCreate(). |
Возвращаемое значение
Успех: | Возвращает размер структуры в байтах. |
Ошибка: | Возвращает 0. |
@error: | 0 = Нет ошибки. |
1 = Структура не является корректной структурой возвращённой функцией DllStructCreate(). |
Примечания
Используется, когда данные в структуре должны придерживаться размеру структуры.См. также
DllStructCreate, DllStructSetDataПример
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
MsgBox(4096, "Сообщение", "Размер структуры: " & DllStructGetSize($tStruct))
$tStruct = 0 ; Освобождает выделенную для структуры память, если потребуется.
; При завершении скрипта или функции (если локальная структура) освобождать не требуется.
#cs Комментарий:
По умолчанию выравнивание 4 байта, что принуждает каждый элемент занимать не менее 4-х байт.
Минимальный размер структуры быть получен установкой выравнивания 1 в начале структуры: "align 1;struct; ..."
Описание о том, как вычисляется размер структуры:
var1: int - 4 байта
var2: byte - 1 байт + 3 байта выравнивания = 4 байта
var3: uint - 4 байта
var4: char[128] - 1 * 128 байт
#ce