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

Как правильно заполнить PCopyDataStruct?   Найти похожие ветки 

← →
Aleksandr.   (2005-01-25 16:02) [0]

Мне надо из одного приложения в другое передать packed record. Объявляю его как:

 PCrtInfo = ^TCrtInfo;
 TCrtInfo = packed record
   UserID     : integer;
   Localed    : boolean;
   Dir        : PChar;
   FileTime   : longint;
 end;


Правильно ли будет параметры для сообщения WM_CopyData заполнять как


var
 P : PCopyDataStruct;
 I : PCrtInfo;
begin
...
 I.UserID:=10123;
 I.Localed:=true;
 I.Dir:=StrNew("C:\Test");
 I.FileTime:=FileAge("C:\Test\test01.txt");
 P.dwData:=ID;
 P.cbData:=SizeOf(I);
 P.lpData:=I;
 SendMessage(RecWnd,WM_CopyData,Handle,LParam(@P))
end


Или размер для cbData надо высчитывать иначе - сплюсовывая размеры для целых и булевых с длиной строки в Dir?


← →
MBo ©   (2005-01-25 16:20) [1]

Твою структуру в таком виде передавать бесполезно - указатель PChar в другом процессе не имеет смысла, дв и в размер ее будет входить только размер указателя. Сделай вместо него строку постоянной длины (string[255], например)


← →
Digitman ©   (2005-01-25 16:50) [2]


> Aleksandr.   (25.01.05 16:02)  


слушай
> MBo ©   (25.01.05 16:20) [1]


← →
MBo ©   (2005-01-25 17:08) [3]

Сразу не обратил внимания вот на что еще:
переменную P делай либо типа TCopyDataStruct, либо оставь PCopyDataStruct, но тогда выдели память под нее и @ убери из SendMessage. Почти то же самое относится и к I : PCrtInfo;


← →
Aleksandr.   (2005-01-25 17:19) [4]

Спасибо... Я глядел в Rus WinApi, там сразу и сампл был со строкой. То ли устарел он, то ли я чего не так понял...



Страницы: 1 вся ветка

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



Память: 0.45 MB
Время: 0.025 c
6-1101658421
Ridrix
2004-11-28 19:13
2005.03.06
Где взять сокеты? хелп


4-1106054649
Tsio
2005-01-18 16:24
2005.03.06
Языковые ресурсы


8-1100836932
negrila
2004-11-19 07:02
2005.03.06
Красивая картинка


14-1108542503
Nikola62
2005-02-16 11:28
2005.03.06
О "Кладовке"


3-1107327777
cad2206
2005-02-02 10:02
2005.03.06
Ошибка в SQL запросе




   Наверх