我的应用程序有一个工作线程,我使用PostMessage将字符串发送到主线程.对于1条消息,字符串在到达主线程中的消息处理程序时被截断.
字符串在工作线程中由一串原始数据构成,如下所示.它在最后的'20'结束.
'01010000000030000102000008850008855343414E204544474520000000000000000000'
解码到我要发送的字符串中它看起来像这样,这是正确的:
'0100 0.50000 LSB0288.588.5SCAN EDGE'
创建"SCAN EDGE"部分并发布它的代码是: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)));
Run Code Online (Sandbox Code Playgroud)
主线程中的消息处理程序是:i是一个字符串
i := pChar(msg.LParam);
Run Code Online (Sandbox Code Playgroud)
当它到达主线程时,我在调试器中看起来像这样:
'0100 0.50000 LSB0288.588.5SCAN EDG'#0
我怎么能纠正这个?
突然,我在_depes.h中遇到了一个带有typedef的错误.我该如何追踪?
#ifdef __GNUC__
typedef __signed char __int8_t;
#else /* !__GNUC__ */
Run Code Online (Sandbox Code Playgroud)