我用MSCOMM接收下位机传上来的BCD码格式的报文,现在想把BCD码转换成10进制或16进制格式,因为作了如下的设置:mscomm1.InputMode:=1;即接收报文方式采用二进制方式接收的,所以我定义了一个变体类型:V: VARTANT,请问各位高手有没有方法将格式转换过来并且显示在MEMO上面,特急,问题解决马上给分,在线等!多谢!!!!!!!!!!!
解决方案 »
- 能不能把数据库里的日期显示在datetimepicker里
- 初学者的问题。。。。需源码。。。
- CAD的DWG怎么导到SHP格式或TAB格式,好让MAPOBJECTs 或MAPX读
- 恶心的 3721!
- 系统提示!
- 对ARRAY OF CHAR数组中数据的提取,有没有更快的方法?
- 一起学习 《delphi com 深入编程》
- 有什么最简单的方法能得到选中的节点的所有子节点的个数?不赊帐,不赊帐。
- 能否向asscess添加图像字段,如果可以,那么要怎样写入和读出,请各位关注
- 请问如何实现在资源管理器中的右键弹出菜单中使文件关联自己的程序...
- 怎么会出现两条记录 ?
- 一個超級簡單的問題,我是新手!!!!
var
returnstring:Ansistring;
high_char,low_char,temp:char;
i:integer;
begin
returnstring:='';
for i:=0 to length-1 do
begin
temp:=P_BCD[i];
high_char:=Char((Ord(temp) and $f0) shr 4);
low_char:=Char((Ord(temp) and $0f));
if (high_char>=#0) and (high_char<=#$9) then
high_char:=Char(Ord(high_char)+$30);
if (high_char>=#$A) and (high_char<=#$F) then
high_char:=Char(Ord(high_char)+$37); if (low_char>=#0) and (low_char<=#$9) then
low_char:=Char(Ord(low_char)+$30);
if (low_char>=#$A) and (low_char<=#$F) then
low_char:=Char(Ord(low_char)+$37);
returnstring:=returnstring+AnsiString(high_char);
returnstring:=returnstring+AnsiString(low_char);
end;
result:=returnstring;
end;
b= chr((ord(a) div 16)*10+ (ord(a) mod 10))
Orec:olevariant;
vrec:variant;
strrec :string;
begin orec:=mscomm1.Input;
vrec:=orec;
strrec:=vrec;这是转化为字符串