Главная страница
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.011 c
6-40139
kvcomp
2002-03-21 11:51
2002.06.13
Уважаемые Мастера! Очень нужна Ваша помощь! Срочно!!!


1-39988
Юрий Ю.
2002-05-25 08:44
2002.06.13
CASE ООП интегрированные с Delphi


3-39939
Помогите
2002-05-21 10:48
2002.06.13
?


3-39933
maxim2
2002-05-17 16:17
2002.06.13
Теперь проблема с Ord()


1-40106
eSKey
2002-05-24 12:35
2002.06.13
Бред с отображением кэпшнов на формах.