![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Различие между двумя типами записей [D7, XP]
kyn66 © (2007-04-14 10:09:00)Уважаемые мастера, подскажите в чем отличие этих двух записей?
TPerArray = packed record
MesE : Integer;
GodE : Integer;
Priz : Boolean;
end;
и
TPerArray = record
MesE : Integer;
GodE : Integer;
Priz : Boolean;
end;
Германн (2007-04-14 12:51:00) [1]
> Мне нужно просто держать некоторые параметры для дальнейшей
> работы. Их штук 5 будет(полей всмысле в записи). Я думаю
> здесь не принципиально говорить о скорости...
>
В этом случае вообще говорить не о чем. Разницы никакой.
Что воля, что неволя всё одно. (с)
kyn66 (2007-04-14 12:20:00) [2]Мне нужно просто держать некоторые параметры для дальнейшей работы. Их штук 5 будет(полей всмысле в записи). Я думаю здесь не принципиально говорить о скорости...
DrPass (2007-04-14 11:18:00) [3]
> Короче лучше использовать упакоанную,я так понял, дабы избежать
> попадания мусора в мои поля?
Смотря что ты собрался с ней делать. Если тебе нужно работать с записью как с единым целым (сохранять в файл, в БД, сравнивать через CompareMem и т.д.), то лучше упакованную. Если ты работаешь только с ее полями, то лучше неупакованную, быстродействие в этом случае будет выше.
kyn66 (2007-04-14 11:14:00) [4]Короче лучше использовать упакоанную,я так понял, дабы избежать попадания мусора в мои поля?
_Аноним (2007-04-14 10:57:00) [5]Неупакованная запись выравнивается в памяти.
То есть она не является непрерывной областью памяти, между полями возможен "мусор", каждое новое поле начинается не сразу после окончания предыдущего, а со смещения ,кратного например четырем.
Выравнивание делается для ускорения работы.
Сравни SizeOf(TPerArray) в двух случаях - они разные.
В случае, если запись неупакованная, ее нелья сравнивать с другой такой же с помощью CompareMem, и при стриминге можно налететь на грабли.
kyn66 (2007-04-14 10:23:00) [6]И только? Мне кажется здесь чегость поширше различие...
TUser (2007-04-14 10:14:00) [7]У второй записи в конце - три пустых (забитых ерундой) байта.