Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.06.13;
Скачать: CL | DM;

Вниз

траверсия полей в записи   Найти похожие ветки 

 
ION T ©   (2002-06-03 01:06) [0]

Кхм, в общем мне интересно а можно-ли пройтись по полям в записи в порядке их обьявления вместо доступа по имени поля? Причём поля разного размера. Ну например:

type TPEHeader = record
Signature: byte;
CpuType: word;
Objects: word;
TimeDateStamp: LongWord;
NtHdrSize: word;
Flags: word;
LMajorMinor: byte;
EntrypointRVA: LongWord;
ImageBase: LongWord;
ObjectAlign: LongWord;
FileAlign: LongWord;
OsMajorMinor: word;
UserMajorMinor: word;
SybsysMajorMinor: word;
ImageSize: LongWord;
HeaderSize: LongWord;
FileChecksum: LongWord;
Subsystem: word;
DllFlags: word;
StackReserveSize: LongWord;
StackCommitSize: LongWord;
HeapCommitSize: LongWord;
VaSizes: LongWord;
ExportTableRVA: LongWord;
ImportTableRVA: LongWord;
ResourceTableRVA: LongWord;
ExceptionTableRVA: LongWord;
SecurityTableRVA: LongWord;
FixupTableRVA: LongWord;
DebugTableRVA: LongWord;
ImageDescriptionRVA: LongWord;
MachineSpecificRVA: LongWord;
TotalExportDataSize: LongWord;
TotalImportDataSize: LongWord;
TotalResourceDataSize: LongWord;
TotalExceptionDataSize: LongWord;
TotalSecurityDataSize: LongWord;
TotalFixupDataSize: LongWord;
TotalDebugDirectories: LongWord;
TotalDescriptionSize: LongWord;
MachineSpecificSize: LongWord;
end;


Так вот писать огромное количество Read(_Field_, sizeof(_Field_)); для заполнения всех записей довольно мучительно:) Так вот я хочу всё это одним циклом сделвть:)) В общем сомневаюсь я, что так можно (ведь оффсеты полей наверняка во время линковки определяются), но на всякий случай решил спросить...


 
Игорь Шевченко ©   (2002-06-03 09:49) [1]

Offset"ы полей определяются компилятором.
Писать код для заполнения можно один раз. Помучиться, зато будет гарантировано верный результат. Или читать один куском, если формат данных источника соотвествует представлению записи в памяти.

С уважением,



Страницы: 1 вся ветка

Текущий архив: 2002.06.13;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.013 c
1-40084
relaxoid
2002-06-02 00:37
2002.06.13
Подсветка SQL


1-39998
SleD
2002-06-03 17:30
2002.06.13
Как перезагрузить компьютер под XP с сохранением настроек


4-40212
IGOREK
2002-04-10 02:57
2002.06.13
Ошибка в глобальном хуке?


1-40044
Yuraz
2002-06-01 16:57
2002.06.13
Братцы, помогите дописать ф-ю перевода рус.б. в транслитерацию,


3-39940
SkyWalker
2002-05-20 13:17
2002.06.13
ADO