我编的是一个mscomm和单片机通讯的程序:(instring、a[i]、b[j]都是string型)
instring:=mscomm1.Input
a[i]:=copy(instring,i,1);
b[j]:=inttostr(strtoint('$a[2*j]'));
用inttostr(strtoint('$a[2*j]'))这个办法把缓冲区的十六进制字符转换为
十进制,
结果弹出“Debugger Exception Notification”,
说:''$a[2*i]' is not a valid integer value'。
问题出在哪?
用这个办法是不是不能转换??
哪个高手教教我??
instring:=mscomm1.Input
a[i]:=copy(instring,i,1);
b[j]:=inttostr(strtoint('$a[2*j]'));
用inttostr(strtoint('$a[2*j]'))这个办法把缓冲区的十六进制字符转换为
十进制,
结果弹出“Debugger Exception Notification”,
说:''$a[2*i]' is not a valid integer value'。
问题出在哪?
用这个办法是不是不能转换??
哪个高手教教我??
解决方案 »
- 汉王考勤机返回数据到电脑
- Delphi 中如何存取Pdf 文件
- fastreport打印的问题(两种纸张大小不一致的打印)
- 在d8中如何编辑dataGrid的模版
- 大家怎么加上的星星,我为什么一直都没有加?
- 请问 delphi 应用程序执行时需要哪些文件(比如运行时刻库等等)
- 一个关于窗体的问题(在线等待...)
- 引用c++的dll图像缓冲区指针,如何显示位图
- 菜鸟问题:Owner属性和Parent属性有什么区别?各有什么作用?
- 请问用API 函数TextOut输出的 文字???
- ===好几天,ADO 连接oracle数据库的问题.还搞定。大伙给看看
- 给定一个html地址,如何得到该页面上含有哪些下载地址?悬赏
按你的方法还是不行啊,还是弹出“Debugger Exception Notification”,
说:''$♂' is not a valid integer value'。
一个检测点数据有两个字节,一个符号字,一个数据字,
比如“-F”,表示零下15度。是八进制的
inttostr(strtoint('$'+'F'))='15'
你应该看看a[2*j]的数对不对
说明a[2*j]='♂'.并不是一个16进制数
No.1
function HexToInt(const asHex: string; aiDefault: Integer): Integer;
begin
Result := StrToIntDef('$' + asHex, aiDefault);
end;
No.2
function IntToBinX(const aiDec: Integer; abWithLeadingZero: Boolean = False): string;
begin
Result := IntToBin(aiDec); //IdGlobal.pas is necessary here.
if abWithLeadingZero then
Exit;
while (Length(Result) > 1) and (Result[1] = '0') do
begin
Delete(Result, 1, 1 );
end;
end;
No.3
ledtHex.Text := Format('%x', [iASCii])
No.4
function BinToInt(asBin: string): LongInt;
var
i: Integer;
begin
Result := 0;
for i := 1 to Length(asBin) do
begin
Result := Result shl 1;
if asBin[i] = '1' then
begin
Result := Result + 1;
end;
end;
end;