我的delphi程序,用了个函数strtofloat('363.23'),在我这里一点问题都没有,可是到有些老外机器上为什么就报异常呢?哪位大侠能救我啊,万分感谢

解决方案 »

  1.   

    仅仅是这一句吗?或你肯定是这个函数引起的?
    我估计是你其它地方引起的,用try+E.Message看一下什么错,如果报内存错,多半是其它地方内存溢出引起的
      

  2.   

    因为是在用户机器里面出错,在我这里没有调试环境,所以我在程序里面没执行一条语句就在日志里面写一句话。结果就是在这条语句执行完后就异常退出了。
    这条语句是这样的
          Memo1.Lines.Add('angle: '+Format('%.6s',[Parent_Node.ChildNodes['Angle'].Text]));
          Angle := StrToFloat(Format('%.6s',[Parent_Node.ChildNodes['Angle'].Text]));
    结果memo1中的结果是 angle: 346.00
    然后就异常了。不知道问题出在哪里
    Parent_Node.ChildNodes['Angle'].Text中的值是很长的,346.003738247283523,所以用Format把它格式化一下
      

  3.   

    我刚刚发现floattostr函数调用了TextToFloat函数,而这个函数是用汇编写的,会不会因为汇编所以跟具体机器有关?
      

  4.   

    应该与汇编没关系.可能还是你的Parent_Node.ChildNodes有问题
      

  5.   

    可是Memo1.Lines.Add('angle: '+Format('%.6s',[Parent_Node.ChildNodes['Angle'].Text])); 
    上面那句话我已经用了Parent_Node.ChildNodes['Angle'].Text,而且没有问题,打出了结果,所以应该没什么问题。因为是在其他人的机器上出问题,我正在加上try e.message看看是什么问题
      

  6.   


    看看异常是不是说invalid floating point value什么的,如果是的话应该还是这个值有问题
      

  7.   

    使用Format函数,在英文和中文系统切换的时候,StrToFloat有的时候不会正常工作!
      

  8.   

    我已经用了format函数了啊
    Angle := StrToFloat(Format('%.6s',[Parent_Node.ChildNodes['Angle'].Text])); 
    这句话里就是用format把格式转换一下,但是还是出错
      

  9.   

    strtofloat的参数能否用utf-8编码的字符串呢
      

  10.   

    刚刚用户把结果发过来了。下面是异常的内容
    angle: 346.00
    Exception class name = EConvertError
    Exception message = '346.00' is not a valid floating point value
    End except:'346.00' is not a valid floating point value
    可是346有什么错呢,真的蒙了
      

  11.   

    有这个错可以判断:
    问题应该是系统的区域选项中的小数点字符设置引起的
    解决方法:

    DecimalSeparator:='.';
    就可以了
    (在程序的开头或在你转小数之前)