Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 [ 91 ] 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140

0000 MyMember 1 dw 4

0008 field 8 db ?

0009 field 9 dw ?

000B MY STRUC ends

dup(?)

DelStrucMember(

GetStrucIdByName("MY STRUC"), 9);

0000 MY STRUC

0000 MyMember 1

0008 field 8

000B MY STRUC

struc ; (sizeof=0xb) dw 4 dup(?) db ?

ends

Операнд

Пояснения

Идентификатор (ID) структуры

offset

Смещение удаляемого члена структуры

Return

==return

Пояснения

Успешное завершение

Ошибка

Интерактивно то же самое можно сделать, если перевести курсор на нужный элемент структуры и нажать клавишу <U>

long SetMemberName(long id,long member offset,char name);

Функция позволяет изменять имя члена функции. Функция задается идентификатором, а член любым, принадлежащим ему смещением. Например:

0000 0000 0001 0002 0003 0004 0005 0006 0007 0008

MY STRUC

struc ; (si unde unde unde unde unde unde unde unde

field

0009 MY STRUC

db db db db db db db db db

ends

zeof=0x9)

fined fined fined fined fined fined fined fined

SetMemberName(

GetStrucIdByName("MY STRUC"), 8,"MyGoodMember");

0000 MY STRUC

0000

0001

0002

0003

struc ; (sizeof=0x9) db ? ; undefined db ? ; undefined db ? ; undefined db ? ; undefined



0004 0005 0006 0007

0008 MyGoodMember

0009 MY STRUC

db db db db db

ends

undefined undefined undefined undefined

Операнд

Пояснения

Идентификатор (ID) структуры

name

Новое имя члена структуры

offset

Смещение удаляемого члена структуры

Return

==return

Пояснения

Успешное завершение

Ошибка

<N>

Интерактивно изменить имя можно, переместив на него курсор и нажав клавишу

long SetMemberType(long id,long member offset,long flag,long typeid,long nitems);

Функция позволяет изменять тип члена структуры. Он определяется флагом flag следующим образом:

Определение

Значение

Пояснения

FF BYTE

0x00000000L

Байт

FF WORD

0x10000000L

Слово

FF DWRD

0x20000000L

Двойное слово

FF QWRD

0x30000000L

Четвертное слово

FF TBYT

0x40000000L

Восьмерное слово

FF ASCI

0x50000000L

ASCII строка

FF STRU

0x60000000L

Структура

FF RESERVED

0x70000000L

Зарезервировано

FF FLOAT

0x80000000L

Float

FF DOUBLE

0x90000000L

Double

FF PACKREAL

0xA0000000L

Packed decimal real

FF ALIGN

0xB0000000L

Директива выравнения

В зависимости от состояния флага, значение аргумента typeid может трактоваться по-разному.

Состояние flag

Значение typeid

FF STRU

ID структуры

FF ASCII

Тип ASCII строки (см. таблицу ниже)

Другое

BADADDR

Обратите внимание, что если новый член структуры не представляет собой ни вложенную структуру, ни ASCII строку, то аргумент typeid должен быть равен BADADDR

Определение

Значение

Пояснения



ASCSTR C

ASCSTR TERMCHR

C-style ASCII string

ASCSTR TERMCHR

Character-terminated ASCII string

ASCSTR PASCAL

Pascal-style ASCII string (length byte)

ASCSTR LEN2

Pascal-style, length has 2 bytes

ASCSTR UNICODE

Unicode string

ASCSTR LEN4

Pascal-style, length has 4 bytes

При этом необходимо, что бы для нового члена хватало места. Если его размер превосходит предыдущий, а следующие за ним смещения принадлежат остальным членам, то тип члена не будет изменен

Пример:

0000 MY STRUC

0000 field 0

0002 field 2

0004 field 4

0006 field 6

0008 MyGoodMember

0009 MY STRUC 0009

struc ; (sizeof=0x9)

dw ? dw ? dw ? dw ? db ?

ends

Message("0x%X \n", SetMemberType(

GetStrucIdByName("MY STRUC"),

FF DWRD,

4));

0000

MY STRUC

struc

0000

field 0

dw ?

0002

field 2

dw ?

0004

field 4

dw ?

0006

field 6

dw ?

0008

MyGoodMember

db ?

0009

MY STRUC

ends

0009

; (sizeof=0x9)

Напротив, если новый член занимает места меньше чем старый, то преобразование происходит без проблем, а «лишние» байты помечаются, как неопределенные.

Например:

0000 MY STRUC

0000 field 0

0002 field 2

0004 field 4

0006 field 6

0008 MyGoodMember

struc ; (sizeof=0x9)

dw ? dw ? dw ? dw ? db ?



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 [ 91 ] 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140