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

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

← →
alex-drob ©   (2008-06-04 00:21) [0]

какая разница? когда что нужно использовать?


← →
Игорь Шевченко ©   (2008-06-04 00:37) [1]

Никогда


← →
Германн ©   (2008-06-04 00:40) [2]


> Игорь Шевченко ©   (04.06.08 00:37) [1]

Антислесарь?


← →
Kerk ©   (2008-06-04 00:41) [3]

Нажми F1
зачем ж ты просишь цитировать хелп?


← →
wicked ©   (2008-06-04 00:42) [4]

в record поля могут быть выравнены на границу 4, 8, 16 байт - как указано опциями компиляции

в packed record поля складываются так, чтобы занимать ровно столько, сколько нужно для представления типа поля

например, запись
x = record
   a: char;
   b: boolean;
   c: integer;
end;

при выравнивании на 8 байт займет в памяти
1 байт - поле a
7 байт - не используются
1 байт - поле b
7 байт - не используются
4 байта - поле c
4 байта - не используются
--------------
итого: 24 байта на запись

packed record займет
1 байт - поле a
1 байт - поле b
4 байта - поле c
--------------
итого: 6 байт на запись

преимущества простых record-ов - скорость доступа к полям записи
преимущества packed record-ов - возможность адекватно представлять форматы данных файлов, например, bmp, riff, swf и т. д.


← →
Германн ©   (2008-06-04 00:49) [5]


> преимущества packed record-ов - возможность адекватно представлять
> форматы данных файлов, например, bmp, riff, swf и т. д.

Скажем так. Необходимость использования packed record-ов возникает тогда, когда вышеуказанные приходят в программу извне. И их структура задана внешними источниками.


← →
alex-drob ©   (2008-06-04 00:54) [6]

т.е. если я использую такую структуру

x = record
  a: string;
  b: integer;
end;

у меня поле a 4 байта и b 4 байта или размер b будет равен колличеству символов в a?


← →
Германн ©   (2008-06-04 00:56) [7]


> у меня поле a 4 байта и b 4 байта или размер b будет равен
> колличеству символов в a?
>

С какого перепуга размер b будет равен количеству символов в a?


← →
@!!ex ©   (2008-06-04 00:58) [8]

> [6] alex-drob ©   (04.06.08 00:54)

string - это указатель.
Вот если бы shortstring использовал, то тогда бы b была смещена! относительно a на количество символов. Размер то у нее один фиг 4 байта в 32 ОС.


← →
Германн ©   (2008-06-04 00:58) [9]


> alex-drob ©   (04.06.08 00:54) [6]

Что-то ты выдумываешь непонятное.
Опять наверно пытаешься освоить непонятный протокол передачи данных с внешних устройств?


← →
alex-drob ©   (2008-06-04 01:04) [10]

ну a:string;
я так понимаю, размер a 4 - Байта а содержимого же больше.


← →
alex-drob ©   (2008-06-04 01:05) [11]

всё, теперь понял! спасибо всем!



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

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



Память: 0.47 MB
Время: 0.012 c
2-1213825037
light-blr
2008-06-19 01:37
2008.07.20
Как заставить программу ждать, пока выполнится вызванная другая?


6-1190291073
Chaser
2007-09-20 16:24
2008.07.20
WNetAddConnection2


2-1213883070
Beer_Hunter
2008-06-19 17:44
2008.07.20
Mail Merge


15-1212508777
Nic
2008-06-03 19:59
2008.07.20
Теория игр : задачи


3-1202764635
alexnmsk
2008-02-12 00:17
2008.07.20
Хранимая процедура




   Наверх