关于消息的疑惑(60分)

  • 主题发起人 主题发起人 W1979
  • 开始时间 开始时间
W

W1979

Unregistered / Unconfirmed
GUEST, unregistred user!
代码如下,form2发送消息,form1接收,奇怪的是发送字符串长度超过3
就收不到lparam参数
form2发送:
var pp:pchar;
ss:string;
ii:integer;
begin
ii:=length(form2.edit1.text);//字符串长
ss:=form2.Edit1.Text; //字符串内容
pp:=pchar(ss);
postmessage(form1.handle,wm_mymsg,wparam(ii),lparam(pp));
end;

form1接收:
k:=pchar(msg.lparam);
j:=dword(msg.WParam);
form1.Edit1.Text:=inttostr(j);//长度
form1.Edit2.Text:=k; //内容
只有发送的 长度<=3才是正常的
不知是为什么?
 
pchar要先getmem
 
我对为什么要分配内存不太懂,我改了程序结果还是不行,只可以发4个字符procedure TForm2.trans1Click(Sender: TObject);
var pp:pchar;
buffer:pointer;
ss:string;
ii:integer;
begin
ii:=length(form2.edit1.text);
ss:=form2.Edit1.Text;
pp:=pchar(ss);
buffer:=pointer(localalloc(LPTR,sizeof(pp)+1));
move(pp^,buffer^,sizeof(pp));
postmessage(form1.handle,wm_mymsg,wparam(ii),lparam(buffer));
end;
实在不懂
 
实在不懂:(
 
sizeof(pp)=4,当然只能发4个字符了.
 
多人接受答案了。
 

Similar threads

I
回复
0
查看
633
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部