tempad
Readygo技术搜索引擎 >>PHP技术 >> 50分请教为什么用pos()取出的的字符串(如:45.6)用strtofloat转换时老是提醒不是有效的浮点值?

50分请教为什么用pos()取出的的字符串(如:45.6)用strtofloat转换时老是提醒不是有效的浮点值?

Readygo技术搜索引擎 网络搜索 efish 2008-1-14 6:26:23

50分请教为什么用pos()取出的的字符串(如:45.6)用strtofloat转换时老是提醒不是有效的浮点值?

楼主xuehan(冬天的雪)2002-05-14 14:29:37 在 Delphi / VCL组件开发及应用 提问

字符串是从.htm文件中用pos()函数取出的,我要转成数值,用strtofloat转换时老是提醒不是有效的浮点值:"45.6     "is   not   a   valid   floating   point   value?另外,"45.6     "尾部的空字符用trim()也去不掉? 问题点数:50、回复次数:19Top

1 楼zswang(伴水清清)(专家门诊清洁工)回复于 2002-05-14 14:42:18 得分 0

看看你的代码  
  strtofloat()   //上下语句Top

2 楼lizhenjia(暴雪)回复于 2002-05-14 14:45:56 得分 0

trim去不掉可能性不大Top

3 楼macro_love(光光)回复于 2002-05-14 14:49:45 得分 0

应该能去掉吧Top

4 楼xuehan(冬天的雪)回复于 2002-05-14 14:53:59 得分 0

取出雨情快讯.htm存入a中:  
      assignfile(thetxtfile,"雨情快讯.htm");  
      reset(thetxtfile);  
      while   not   eof(thetxtfile)   do  
      begin  
          readln(thetxtfile,b);  
          a:=a+b;  
      end;  
   
  找到要得字符  
      yuliang:=copy(a,1,ttt-1);  
      yuliang_1:=strtofloat(yuliang);Top

5 楼taidy()回复于 2002-05-14 14:56:38 得分 0

我也遇到过同样的问题,那可能是个回车换行!trim确实去不掉,可么是个格式问题Top

6 楼xuehan(冬天的雪)回复于 2002-05-14 14:57:37 得分 0

取出雨情快讯.htm存入a中:  
      assignfile(thetxtfile,"雨情快讯.htm");  
      reset(thetxtfile);  
      while   not   eof(thetxtfile)   do  
      begin  
          readln(thetxtfile,b);  
          a:=a+b;  
      end;  
   
  找到要得字符  
      ttt:=pos("<",e);  
      yuliang:=copy(a,1,ttt-1);  
      yuliang_1:=strtofloat(yuliang);  
  Top

7 楼webnumen(现代孔子)回复于 2002-05-14 15:06:58 得分 0

你的"45.6     "里面含有字符,当然出现错误啦,用trim函数去玩玩,试试看!Top

8 楼macro_love(光光)回复于 2002-05-14 15:07:10 得分 5

你这是回车不是空格我给你写个函数来去掉吧  
  function   DeleteLineBreaks(const   S:   string):   string;  
  var  
          Source,   SourceEnd:   PChar;  
  begin  
          Source   :=   Pointer(S);  
          SourceEnd   :=   Source   +   Length(S);  
          while   Source   <   SourceEnd   do  
          begin  
                  case   Source^   of  
                          #10:   Source^   :=   #32;  
                          #13:   Source^   :=   #32;  
                  end;  
                  Inc(Source);  
          end;  
          Result   :=   S;  
  end;  
  这样就能去掉回车了Top

9 楼dreamfan(改行不做程序员,回家种地。)回复于 2002-05-14 15:10:31 得分 0

你取出的字符本来就不能转化成浮点型的,  
  Top

10 楼wildhorseli(野马笑了)回复于 2002-05-14 15:10:47 得分 0

你可以把不行的一行的代码写出来,大家好看看,作一下试验就可以,ok?Top

11 楼zswang(伴水清清)(专家门诊清洁工)回复于 2002-05-14 15:13:33 得分 0

 
      ttt:=pos("<",e);  
      yuliang:=copy(a,1,ttt-1);  
      yuliang_1:=strtofloat(Trim(yuliang));   //建议使用StrToFloatDef()Top

12 楼fyje(云中仙)回复于 2002-05-14 15:16:31 得分 0

最后那个空字符不是真正的空格,可能是半字符,你可以在pos里面长度少取一位就成了Top

13 楼qybao(阿宝)回复于 2002-05-14 15:21:49 得分 0

建议你重新获得你的字符串  
  var  
      tmp:   string;  
      loop:   Integer;  
  begin  
      tmp   :=   "";  
      for   loop   :=   1   to   length(yuliang)   do  
      begin  
          if   Pos(Copy(yuliang,loop,1),"0123456789.")>0   then  
              tmp   :=   tmp+Copy(yuliang,loop,1);  
      end;  
      yuliang_1:=strtofloat(tmp);  
  end;Top

14 楼ssgang(大刚)回复于 2002-05-14 15:24:14 得分 30

strtofloat(copy("*.htm,Pos("45.6","*.htm"),4))  
  这样不可以吗?Top

15 楼xuehan(冬天的雪)回复于 2002-05-14 15:33:19 得分 0

macro_love(如风):你的函数还是去不掉后面的东东  
   
  zswang(伴水)(*   嘻   *)   :StrToFloatDef()通不过,好象没有这个函数  
   
   
  Top

16 楼zswang(伴水清清)(专家门诊清洁工)回复于 2002-05-14 15:49:10 得分 15

这个函数是Delphi6才有的  
  你可以参考qybao(阿宝)的代码  
  var  
      T:   string;  
      I:   Integer;  
  begin  
  //....  
      T   :=   "";  
      for   I   :=   1   to   Length(yuliang)   do  
          if   yuliang   in     then  
              T   :=   T   +   yuliang;  
      yuliang_1   :=   StrToFloat(T);  
  //....  
  end;  
   
  Top

17 楼xuehan(冬天的雪)回复于 2002-05-14 16:08:40 得分 0

ssgang(大刚)   :实在抱歉,30分给错了,给到ssgang(大刚)   上了,我重发个帖子,你上来答一条,我给你50分!!Top

18 楼xuehan(冬天的雪)回复于 2002-05-14 16:10:47 得分 0

qybao(阿宝)   :实在抱歉,30分给错了,给到ssgang(大刚)   上了,我重发个帖子,你上来答一条,我给你50分!!  
   
  qybao(阿宝)   :实在抱歉,30分给错了,给到ssgang(大刚)   上了,我重发个帖子,你上来答一条,我给你50分!!  
   
   
  qybao(阿宝)   :实在抱歉,30分给错了,给到ssgang(大刚)   上了,我重发个帖子,你上来答一条,我给你50分!!  
   
   
  qybao(阿宝)   :实在抱歉,30分给错了,给到ssgang(大刚)   上了,我重发个帖子,你上来答一条,我给你50分!!  
   
   
  qybao(阿宝)   :实在抱歉,30分给错了,给到ssgang(大刚)   上了,我重发个帖子,你上来答一条,我给你50分!!  
   
  Top

责任编辑: efish 参与评论 查找更多:
相关文章
这两段代码为什么会互相影响,我真搞糊涂了? 这两段代码为什么会互相影响,我真搞糊涂了?
怎样判断返回的数据集为空? 怎样判断返回的数据集为空?
有安徽的朋友?? 请帮帮忙??小第万分感激!! 有安徽的朋友?? 请帮帮忙??小第万分感激!!
有谁知道SoftICE 4.05 for Windows NT/2000 的Licen… 有谁知道SoftICE 4.05 for Windows NT/2000 的License?
财务软件 财务软件
如何在sql server2000中创建数据库? 如何在sql server2000中创建数据库?
如何制作网络协议的安装程序 如何制作网络协议的安装程序
msgbox的一点问题! msgbox的一点问题!
简单问题,高手请进 简单问题,高手请进
有什么类似listview的控件,请推荐您觉得最好的 有什么类似listview的控件,请推荐您觉得最好的
2秒记住本站域名

玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的readygo.com.cn

分类导航
Readygo技术搜索引擎