Форум: "Потрепаться";
Текущий архив: 2003.10.20;
Скачать: [xml.tar.bz2];
ВнизЧто значит слово packed в объявлениях Найти похожие ветки
← →
michael (2003-10-01 14:16) [0]Что значит слово packed в следующих объявлениях:
TPhoneRec = packed record
PersonName: string[25];
Address: string[25];
Phone: string[16];
end;
Name: packed array[1..8] of char;
Чем бы они отличались если в них отсутствовало слово packed?
← →
MBo (2003-10-01 14:18) [1]см. хелп, там это есть.
кратко - не будет выравнивания данных, они будут лежать вплотную
← →
clickmaker (2003-10-01 14:23) [2]Обычно это используется при переводе структур из DLL без исходников, когда не ясно, какое там выравнивание стоит. Если рекорд юзается только твоей прогой, смысла в этом особого нет
← →
Anatoly Podgoretsky (2003-10-01 15:10) [3]А вот это абсурд, если не ясно какое там выравнивание стоит, то packed не поможет.
← →
michael (2003-10-01 15:32) [4]
> Anatoly Podgoretsky © (01.10.03 15:10) [3]
Дак может вы тогда объясните? Я токое обявление встертил в вашей статье.
← →
clickmaker (2003-10-01 15:38) [5]Ну да, неверно выразился :)
Короче, если на Си написана DLL, в ней есть структура, которую хочется поюзать из дельфового приложения, то чтобы не зависеть от настроек выравнивания компиляторов можно так сделать: в Си ее объявить так
#pragma pack(1)
struct TPhoneRec {
char PersonName[25];
char Address[25];
char Phone[16];
}
#pragma pack(1)
ну а в Дельфях
TPhoneRec = packed record
PersonName: array[0..24] of char;
...
end;
Ну и при записи рекордов в двоичные файлы тоже полезно, чтобы несовместимостей между различными приложениями не возникало
← →
Е-Моё имя (2003-10-01 15:42) [6]
> Что значит слово packed в объявлениях
если полей в записи на N байт, значит именно N она и будет занимать
если не packed-может быть N+m
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2003.10.20;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.014 c