Главная страница
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
1-1083825060
Term
2004-05-06 10:31
2004.05.23
List Index out of bounds(1)


3-1082967154
Nataly
2004-04-26 12:12
2004.05.23
Помогите с QuickReport (как работать без принтера)


14-1083753084
Nick-From
2004-05-05 14:31
2004.05.23
преобразовать массив


14-1083316983
mfender
2004-04-30 13:23
2004.05.23
Развод с широким размахом?


14-1083450258
хм
2004-05-02 02:24
2004.05.23
Про Бил Гейца