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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.035 c
8-1078899334
Галинка
2004-03-10 09:15
2004.05.23
Как повернуть картинку на произвольный угол?


11-1071528845
f3n
2003-12-16 01:54
2004.05.23
аналог VCL::TDrawGrid


3-1083134812
Негодов
2004-04-28 10:46
2004.05.23
Обработка данных перед выводом их в DBGrid


1-1084039217
studentRSU
2004-05-08 22:00
2004.05.23
Проблема со скринсервером


14-1083547372
MPS
2004-05-03 05:22
2004.05.23
Задачка по информатике...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский