Текущий архив: 2005.03.06;
Скачать: 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 вся ветка
Текущий архив: 2005.03.06;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.03 c