![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
type TMyType= packed record
Николай Быков © (2002-10-10 15:00:00)Я всегда писал type TMyType=record
А недавно увидел слово packed. что оно значит, в каких случаях нужно?
PVOzerski (2002-10-10 15:38:00) [1]Проще говоря, добавка packed к record в Delphi делает выравнивание полей=1, это аналогично в использованию в Delphi локальных директив {$A-},{$A1},{$align off} или {$align 1}, а в FPC - {$PACKRECORDS 1}. В BP выравнивания нет в принципе, до D6 {$a}/{$align} есть только +/- (on/off). Как в D1 - не помню, прошу прощения :^). В В D6 по умолчанию стоит {$A8}, в D3 {$A+}.
NeyroSpace (2002-10-10 15:14:00) [2]type
TDateRec = record packed
Year: Integer;
Month: String[15]
end;
Физически это значит, что в памяти Month будет следовать сразу за Year.
@Month = @Year + sizeof(integer)
Я один раз долго не мог понять почему прибавляя к указателю размерность типа данных не попадаешь на начало следующего поля записи, потом оказалось, что нужно определять запись как Packed.
Если не указать Packed, то работает не всегда, что и приводит в "неписуемый восторг".
still (2002-10-10 15:10:00) [3]
> Николай Быков © (10.10.02 15:07)
> То есть получается надо писать без слова packed ?
смотря для чего
Демонов Е.В. (2002-10-10 15:09:00) [4]А ещё можно Packed array
Николай Быков (2002-10-10 15:07:00) [5]То есть получается надо писать без слова packed ?
still (2002-10-10 15:06:00) [6]By default, the values in a structured type are aligned on word or double-word boundaries for faster access.
Т.е. происходит выравнивание данных в записи, а когда Packed - не проиходит. В этом случае структура занимает меньше места, однако
Using packed slows data access and, in the case of a character array, affects type compatibility
Николай Быков (2002-10-10 15:06:00) [7]Если я не забыл аглицкий, то это для сжатия инфы?
Best Before 2024 (2002-10-10 15:03:00) [8]Press F1!!!
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.