Вниз
Скачать: 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
15-1212616327
alex-drob
2008-06-05 01:52
2008.07.20
есть ли в делфи компанент для разложения RFC-822


3-1198262739
DBUser
2007-12-21 21:45
2008.07.20
Как сделать TRIGGER в Oracle из Delphi?


2-1213610401
masv
2008-06-16 14:00
2008.07.20
изменить размер шрифта при печати сетки


2-1213858466
uno-84
2008-06-19 10:54
2008.07.20
Шрифт текста в строке StringGrid


15-1212722831
Andre_s
2008-06-06 07:27
2008.07.20
Исходный код Paint-a




   Наверх