Анимация
JavaScript
|
Главная Библионтека 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
Интерактивно то же самое можно сделать, если перевести курсор на нужный элемент структуры и нажать клавишу <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
<N> Интерактивно изменить имя можно, переместив на него курсор и нажав клавишу long SetMemberType(long id,long member offset,long flag,long typeid,long nitems); Функция позволяет изменять тип члена структуры. Он определяется флагом flag следующим образом:
В зависимости от состояния флага, значение аргумента typeid может трактоваться по-разному.
Обратите внимание, что если новый член структуры не представляет собой ни вложенную структуру, ни ASCII строку, то аргумент typeid должен быть равен BADADDR Определение Значение Пояснения
При этом необходимо, что бы для нового члена хватало места. Если его размер превосходит предыдущий, а следующие за ним смещения принадлежат остальным членам, то тип члена не будет изменен Пример: 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"),
; (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 |