奇怪到家了,谁能帮忙解决这个问题

jsnjgzg 2008-09-02 07:15:29
我的delphi程序,用了个函数strtofloat('363.23'),在我这里一点问题都没有,可是到有些老外机器上为什么就报异常呢?哪位大侠能救我啊,万分感谢
...全文
178 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿三 2008-09-03
  • 打赏
  • 举报
回复
楼上的楼上正解,这个就类似于日期格式的问题
huangjacky 2008-09-03
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 keiy 的回复:]
有这个错可以判断:
问题应该是系统的区域选项中的小数点字符设置引起的
解决方法:

DecimalSeparator:='.';
就可以了
(在程序的开头或在你转小数之前)
[/Quote]
楼上正解,佩服
柯本 2008-09-03
  • 打赏
  • 举报
回复
有这个错可以判断:
问题应该是系统的区域选项中的小数点字符设置引起的
解决方法:

DecimalSeparator:='.';
就可以了
(在程序的开头或在你转小数之前)
jsnjgzg 2008-09-02
  • 打赏
  • 举报
回复
刚刚用户把结果发过来了。下面是异常的内容
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有什么错呢,真的蒙了
jsnjgzg 2008-09-02
  • 打赏
  • 举报
回复
strtofloat的参数能否用utf-8编码的字符串呢
jsnjgzg 2008-09-02
  • 打赏
  • 举报
回复
我已经用了format函数了啊
Angle := StrToFloat(Format('%.6s',[Parent_Node.ChildNodes['Angle'].Text]));
这句话里就是用format把格式转换一下,但是还是出错
火龙岛主 2008-09-02
  • 打赏
  • 举报
回复
使用Format函数,在英文和中文系统切换的时候,StrToFloat有的时候不会正常工作!
JeffChung 2008-09-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 keiy 的回复:]
应该与汇编没关系.可能还是你的Parent_Node.ChildNodes有问题
[/Quote]

看看异常是不是说invalid floating point value什么的,如果是的话应该还是这个值有问题
jsnjgzg 2008-09-02
  • 打赏
  • 举报
回复
可是Memo1.Lines.Add('angle: '+Format('%.6s',[Parent_Node.ChildNodes['Angle'].Text]));
上面那句话我已经用了Parent_Node.ChildNodes['Angle'].Text,而且没有问题,打出了结果,所以应该没什么问题。因为是在其他人的机器上出问题,我正在加上try e.message看看是什么问题
柯本 2008-09-02
  • 打赏
  • 举报
回复
应该与汇编没关系.可能还是你的Parent_Node.ChildNodes有问题
jsnjgzg 2008-09-02
  • 打赏
  • 举报
回复
我刚刚发现floattostr函数调用了TextToFloat函数,而这个函数是用汇编写的,会不会因为汇编所以跟具体机器有关?
jsnjgzg 2008-09-02
  • 打赏
  • 举报
回复
因为是在用户机器里面出错,在我这里没有调试环境,所以我在程序里面没执行一条语句就在日志里面写一句话。结果就是在这条语句执行完后就异常退出了。
这条语句是这样的
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把它格式化一下
柯本 2008-09-02
  • 打赏
  • 举报
回复
仅仅是这一句吗?或你肯定是这个函数引起的?
我估计是你其它地方引起的,用try+E.Message看一下什么错,如果报内存错,多半是其它地方内存溢出引起的

16,748

社区成员

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

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