读书人

amp;#x27;$ is not a valid integer valu

发布时间: 2013-01-04 10:04:18 作者: rapoo

'$ is not a valid integer value怎么解决

var
s: string;
i:Integer;
mystr,showstr:String;
begin
mystr := ''; //初始化分析用字符串为空
showstr := ''; //初始化显示用字符串为空
SetLength(s, Len); //设定接收长度
CopyMemory(PChar(s), PChar(Integer(Buffer)), Len); //接收数据

//忽略网络测试命令
if s='net test' then //net test 为自定义的网络测试命令
begin
mmoReceive.Lines.add(Format('收到来自: %s:%d'#13#10, [FromIP, Port]) + s +'网络测试命令');
Exit;
end;

for i := 1 to Length(s) do //将接收数据转换为16进制字符串
begin
try
mystr := mystr+ IntToHex(Ord(s[i]), 2); //分析用字符串
showstr := showstr+' '+ IntToHex(Ord(s[i]), 2); //显示用字符串
except
end;
end;
mystr:=Trim(mystr); //去除前后空字符
showstr:= Trim(showstr);
mmoReceive.Lines.add(Format('收到来自: %s:%d'#13#10, [FromIP, Port]) + showstr);
//////////////////
while Length(mystr)>0 do //处理分析字符串
begin
if copy(mystr,1,2)= '81' then //81信号状态,不需存储,直接显示
begin
try
RedGreenLight(mystr,FromIP); //信号状态更新显示
mystr := Copy(mystr,21,Length(mystr));//出错的时候 程序停止到这儿 except
end;
end

从单片机接受数据,运行一段时间会出错,不是一运行就报错
[解决办法]
应该是字符串转整形出错了。字符串如果为空,提示就是这样。
你可以写日志跟踪下。
[解决办法]
应该是这个函数里面将字符串转为整型数据时出错了:RedGreenLight(mystr,FromIP); //信号状态更新显示
将这个函数的代码贴出来看下。
[解决办法]
InputData肯定是长度不够19位,LightState:=copy(InputData,17,2);返回的是空;

ChechSubPlace:= IntToStr(StrToInt('$'+LightState));//16进制转成10进制

这句相当于是:ChechSubPlace:= IntToStr(StrToInt('$'));//16进制转成10进制
所以报错。

读书人网 >.NET

热点推荐