Вниз
Скачать: 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.042 c
11-1089554522
Андрей
2004-07-11 18:02
2005.03.06
ToolBar - Решение странной проблемы


14-1108127746
DSmale
2005-02-11 16:15
2005.03.06
StyleXP


1-1108674888
Morn Gil
2005-02-18 00:14
2005.03.06
Стиль XP


14-1108581372
Nicto
2005-02-16 22:16
2005.03.06
Кодекс от 15 февраля 2005. ( философия )


1-1108844514
shodan
2005-02-19 23:21
2005.03.06
путь к папке




   Наверх