【发布时间】:2012-03-29 19:30:28
【问题描述】:
我的应用程序有一个工作线程,我使用 PostMessage 向主线程发送一个字符串。对于 1 条消息,字符串在到达主线程中的消息处理程序时会被截断。
字符串是在工作线程中从一串像这样的原始数据构造的。它在最后一个 '20' 结束。
'01010000000030000102000008850008855343414E204544474520000000000000000000'
解码成我要发送的字符串看起来是这样的,没错:
'0100 0.50000 LSB0288.588.5扫描边缘'
创建“扫描边缘”部分并发布它的代码是: tmp 和 s_out 是字符串
x := 35;
for i := 1 to 10 do
begin
tmp := '$' + copy(s,x,2);
TryStrToInt(tmp,dec);
s_out := s_out + chr(dec);
x := x + 2;
end;
PostMessage(MainHandle,UM_CLONE, UM_756, Integer(PChar(s_out)));
主线程中的消息处理程序是: 我是一个字符串
i := pChar(msg.LParam);
当它到达主线程时,我在调试器中看起来像这样:
'0100 0.50000 LSB0288.588.5SCAN EDG'#0
我该如何纠正这个问题?
【问题讨论】:
标签: multithreading delphi delphi-7 postmessage