16,749
社区成员
发帖
与我相关
我的任务
分享
//这段代码在ontest中可以正常接收到发过来的信息
procedure TForm1.btn1Click(Sender: TObject);
var pdata :array[0..4] of Byte ;
i : Integer;
begin
FillChar(pdata,5,0);
for i := 0 to 4 do
begin
pdata[i] := i * 10;
end;
PostMessage(Handle,WM_TEST,5,LongWord(@pdata[0]));
end;
procedure TForm1.OnTest(var Msg: TMessage);
var pd : array[0..4] of Byte;
i : Integer;
begin
CopyMemory(@pd[0],Pointer(Msg.LParam),5);
for i := 0 to Msg.WParam - 1 do
begin
ShowMessage(IntToStr(pd[i]));
end;
end;
//下面代码也可以正常接收,只是showmessage后会报错,不知什么原因
procedure TForm1.btn1Click(Sender: TObject);
var pdata :pByte ;
i : Integer;
begin
GetMem(pdata,5);
FillChar(pdata^,5,0);
for i := 0 to 4 do
begin
pdata^ := i * 10;
inc(LongWord(pdata),1);
end;
inc(LongWord(pdata),-5);
SendMessage(Handle,WM_TEST,5,LongWord(@pdata));
FreeMem(pdata,5);
end;
procedure TForm1.OnTest(var Msg: TMessage);
var pd : pByte;
i : Integer;
aa : TBitmap;
begin
CopyMemory(@pd,Pointer(Msg.LParam),5);//拷贝正常,执行完毕报错
//Move(Pointer(Msg.LParam)^,(@pd)^,5);//正常
for i := 0 to Msg.WParam - 1 do
begin
ShowMessage(IntToStr(pd^));
if i < Msg.WParam - 1then
Inc(LongWord(pd),1);
end;
end;