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

Вниз

record и packed record   Найти похожие ветки 

 
Alek_1   (2004-05-07 14:18) [0]

Чем отличается record от packed record?
И в каких случаях лучше использовть record, а в каких packed record?


 
Семен Сорокин ©   (2004-05-07 14:27) [1]

From Help:

By default, the values in a structured type are aligned on word or double-word boundaries for faster access. When you declare a structured type, you can include the reserved word packed to implement compressed data storage. For example,

type TNumbers = packed array[1..100] of Real;

Using packed slows data access and, in the case of a character array, affects type compatibility (for more information, see Memory management).


 
han_malign ©   (2004-05-07 14:45) [2]

на пальцах:
Project Options->Compiler->Record field alignment(1,2,4(,8{D7}))
или {$A+}, {$A-}, {$A1}, {$A2}, {$A4}, or {$A8}

type
  Rec = record
     b: byte;
     w: word;
  end;

для выравнивания 1, данные побайтово лежат - bww
2 - b0ww
4 - b000ww00
8 - b0000000ww000000
а теперь представь, что в одном модуле(скажем в dll) выравниване 1, в другом 4 - в лучшем случае будет неправильно прочитано w, в худшем(при записи)  ты вылезешь за границу структуры(неявное прямое приведение), запорешь "чужие" данные, и наверняка словишь AV...

packed - описывает структуру с выравниванием 1, независимо от опций компилятора

З.Ы.(в C это делается #pragma pack()/push/pop)


 
Alek_1   (2004-05-07 16:55) [3]

спасибо!


 
WebErr ©   (2004-05-07 17:00) [4]


> han_malign ©   (07.05.04 14:45) [2]

ИМХО самое грамотное объяснение, данное когда-либо по этому вопросу. :)


 
pasha_golub ©   (2004-05-07 17:03) [5]

Грамотное без спору, но если бы я его не знал, то не понял был. :-)

han_malign ©   (07.05.04 14:45) [2]
Respect



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

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

Наверх




Память: 0.47 MB
Время: 0.022 c
9-1073934198
Bortel
2004-01-12 22:03
2004.05.23
написание игр в DelphiX


1-1084203611
Reals
2004-05-10 19:40
2004.05.23
Нужно убрать ScrollBar у компонента ListView


14-1083697893
vic_vm
2004-05-04 23:11
2004.05.23
Реально ли вытащить из COM объекта его методы?


1-1084192563
Vitalnet
2004-05-10 16:36
2004.05.23
Скажите как правильно работать с TreeViewer


7-1082107030
Stas
2004-04-16 13:17
2004.05.23
COM порт