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

Что значит слово 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 вся ветка

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



Память: 0.46 MB
Время: 0.012 c
1-65493
AndrewPo
2003-10-08 11:51
2003.10.20
перемещение между TEdit ами по нажатию Enter


14-65583
Zhouck
2003-10-02 12:53
2003.10.20
Звуковуха ForteMedia


14-65596
blackweber
2003-10-01 12:24
2003.10.20
win 2000 server registry


1-65542
Vadim S
2003-10-07 14:03
2003.10.20
Как замерить микросекунды?


14-65624
Омлет
2003-09-30 21:50
2003.10.20
Именинники 30 сентября!




   Наверх