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

leabean 2012-11-14 01:49:24
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

从单片机接受数据,运行一段时间会出错,不是一运行就报错
...全文
2386 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
feiba7288 2012-11-14
  • 打赏
  • 举报
回复
InputData肯定是长度不够19位,LightState:=copy(InputData,17,2);返回的是空; ChechSubPlace:= IntToStr(StrToInt('$'+LightState));//16进制转成10进制 这句相当于是:ChechSubPlace:= IntToStr(StrToInt('$'));//16进制转成10进制 所以报错。
leabean 2012-11-14
  • 打赏
  • 举报
回复
RedGreenLight(InputData,IpAddress:string)函数有段代码

LightState:=copy(InputData,19,2);// 联机状态
//if LightState = '00' then ;
// 检测器/////////////////////////////////////////////////////////////
LightState:=copy(InputData,15,2);// 检测器位置
if LightState = '03' then ChechPlace:='东口';
if LightState = '02' then ChechPlace:='南口';
if LightState = '01' then ChechPlace:='西口';
if LightState = '00' then ChechPlace:='北口';

LightState:=copy(InputData,17,2);
ChechSubPlace:= IntToStr(StrToInt('$'+LightState));//16进制转成10进制
//1相位
LightState:=copy(InputData,3,2);
sDiffer:= IntToStr(StrToInt('$'+LightState));//16进制转换10进制
LightState:=copy(InputData,5,2);
sCountDown:= IntToStr(StrToInt('$'+LightState));//16进制转换10进制
是不是这里有问题
feiba7288 2012-11-14
  • 打赏
  • 举报
回复
应该是这个函数里面将字符串转为整型数据时出错了:RedGreenLight(mystr,FromIP); //信号状态更新显示 将这个函数的代码贴出来看下。
虎滴小猪猪 2012-11-14
  • 打赏
  • 举报
回复
应该是字符串转整形出错了。字符串如果为空,提示就是这样。 你可以写日志跟踪下。

16,747

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧