Notonly 发表于 2008-11-14 11:45:38

请教:Delphi中怎样限制输出字符串的长度【恢复】

把整型数据转为字符串在Memo中显示时,如整型数据为0,则输出也为0,怎么处理可使整型数据为0时显示为00?整型数据为1时,显示01?谢谢指教~~

Notonly 发表于 2008-11-14 17:07:41

谢谢两位

shark 说的看起来更简单,可我不知道怎么先得到串口的二进制数据...



从没接触过上位机,更不要说Delphi了,现在想把一别人用Delphi写的串口调试工具改成自己需要的数据显示方式供自己调试单片机(串口用的是SPCOMM控件),边改边学,困难重重~~

先看看我现在是怎么么办的(方法很笨,高手看了不要笑):

原作者的程序中有一把接收的数据转为十六进制字符串的程序,我按我的理解在原作的基础上改的,假如最后得到的十六进制字符串为A

var

 i:Integer



 i:=StrToInt('$'+A);

 Memo1.Text:=IntToStr(i);



这样的话要是一个字节还好说,我想把连续收到的3个单字节转换成十进制输出显示就显得麻烦了:

先定义一个字符串数组a[]保存收到的3个单字节数据;

i:=StrToInt('$'+a)*65536+StrToInt('$'+a)*256+StrToInt('$'+a);

Memo1.Text:=IntToStr(i);

这样最后虽然得到了我要的结果,可怎么看怎么觉得太烦琐...



这段程序该怎么写?请朋友们指点一下,谢谢~

hexenzhou 发表于 2008-11-14 15:39:10

10进制显示调用IntToStr函数即可。

shark 发表于 2008-11-14 15:31:27

呵呵 ,这一段一直用C,习惯性错误。

串口收到的就是二进制数据而已,显示成什么都可以,同样可以用format函数来完成



var

   rec:byte;//收到的字节数据

begin

   memo1.Text := Format('%.2d ,0x%.2X',);//前面用十进制显示,后面用十六进制显示

end;

   

Notonly 发表于 2008-11-14 14:51:57

谢谢shark 

"%.2d"要改成'%.2d'才能编译通过



想再问一个问题,怎么把从串口收到的单片机发过来的数据变成十进制的数据显示出来?

例如单片机发的数据是0x5A,我想让它变成90(5A的十进制)显示出来怎么做?谢谢~~

shark 发表于 2008-11-14 12:13:32

var

  s :string

  i:Integer;

begin

   s:= Format("%.2d",);

   memo1.Text := s;

end;
页: [1]
查看完整版本: 请教:Delphi中怎样限制输出字符串的长度【恢复】