Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.04.17;
Скачать: [xml.tar.bz2];

Вниз

Теоретический вопрос про директиву 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 вся ветка

Форум: "Основная";
Текущий архив: 2003.04.17;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.44 MB
Время: 0.009 c
3-54458
Алекс
2003-03-28 15:07
2003.04.17
Синхнонизация данных клиента и сервера


4-54964
Thorn
2003-02-16 15:48
2003.04.17
Список запущенных процессов


7-54903
ed
2003-02-23 12:46
2003.04.17
Смена используемого по умолчанию принтера


8-54746
darkbear
2003-01-14 11:59
2003.04.17
GDI+: Ширина строки


3-54403
me2
2003-04-01 11:30
2003.04.17
Как снести IB DescTop Edition





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский