Вниз
Скачать: CL | DM;

Теоретический вопрос про директиву packed   Найти похожие ветки 

 
Тимохов   (2003-04-04 15:32) [0]

Вопрос такой. Все знают что делает директива packed.
Для record она заставляет все поля идти в порядке (без выравнивания):
type
r1: record a: byte; b: word end
r2: packed record a: byte; b: word end
sizeof(r1) = 4, тогда как sizeof(r2) = 3
Здесь все ясно. Например, этим приходится пользоваться когда нужно читать заголовок файла и т.д.
Вроде как packed работает и для массивов.
Но тут возникает вопрос. В хелпе есть пример: type a: packed array[1..100] of Real48; Вроде как БЕЗ packed sizeof(a) должен быть равен 800 б, а с packed - 600 б. На самом деле размеры в любом случае равны 600. Более того, я не знаю ни одного случая когда packed у массивов оказывал бы какое-нибудь влияние.

Может кто-нибуть просвятить общественность по этому поводу? Или даст ссылочку где про это доходчиво написано?


 
Sha ©   (2003-04-04 22:15) [1]

Все это так потому, что в реализации Борланд:
1. Размер (статического) массива равен сумме размеров всех его элементов.
2. Размер Packed записи равен сумме размеров всех ее полей.
3. Размер не Packed записи кратен максимальному размеру поля.
4. Тип Real48 = packed record
Exp: shortint;
FracLow: byte;
FracHigh: integer;
end;



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

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.016 c
1-54711
DmTsaplin
2003-04-04 17:19
2003.04.17
DBGrid не получает фокус ввода


7-54896
mmmh
2003-02-22 00:28
2003.04.17
Пишу такую прогу: Есть форма. На ней необходимо создать несколько


6-54776
Sils
2003-02-24 09:45
2003.04.17
Помогите пожалуйста !!! Очень нужно !!!


1-54593
Slonic75
2003-04-07 11:05
2003.04.17
Как сделать что бы приложение не выгружалось при Log off?


3-54439
Sectey
2003-04-01 10:56
2003.04.17
ClientDataSet & Index




   Наверх