首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

'$ is not a valid integer value如何解决

2013-01-04 
'$ is not a valid integer value怎么解决vars: stringi:Integermystr,showstr:Stringbeginmystr

'$ 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进制
所以报错。

热点排行