首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

通过发送消息来传递字符串,接收方怎么获得字符串

2012-02-24 
通过发送消息来传递字符串,接收方如何获得字符串?Delphi(Pascal) codeprocedure TAAThread.Executevar s:

通过发送消息来传递字符串,接收方如何获得字符串?

Delphi(Pascal) code
procedure TAAThread.Execute;var s:string;begin  s:='jkchjvb';  PostMessage(handle,WM_My,integer(s),6);end;


用这个发送字任串,发现字符串不能太长,否则出错。所以直接发指针

Delphi(Pascal) code
procedure TAAThread.Execute;var s:string;begin  s:='jkchjvb';  PostMessage(handle,WM_My,integer(@s),6);end;


那么现在我应该如何在接收方得到这个字符串呢?

[解决办法]
Delphi(Pascal) code
procedure TAAThread.Execute;var s:string;begin  s:='jkchjvb';  PostMessage(handle,WM_My,integer(s),6);end;
[解决办法]
Delphi(Pascal) code
procedure TForm1.OnSys(var msg: TMessage);  var pData : PChar;begin    pData := PChar(msg.lparam);  lst1.Items.Add(pData);end;procedure TForm1.btn1Click(Sender: TObject);  var pData : string;begin  pData := '测试测试测试';  PostMessage(Handle,WM_SYS,0,Integer(pData));end;
[解决办法]
这种情况,你需要在线程中动态开辟内存(虽然这样做不是很好,但是不会有错误)

Delphi(Pascal) code
//线程中:procedure TAAThread.Execute;var   p: Pointer;begin  GetMem(p, 7);  ZeroMemory(p, 7);  Move('jkchjvb', p^)  PostMessage(handle,WM_My,integer(p),6);end;//接收部分var  p: Pointer;begin  p := Pointer(msg.LParam);  self.mmoInfo.Lines.Add(String(p));  FreeMem(p); // 释放end; 

热点排行