请问如何将'112,345,234'这样的string转换成数字?
不用pos(',','112,345,234'),因为可能间隔不是','
有没有函数?

解决方案 »

  1.   

    有一个最简单的方法,就是找一个类似于NumberEdit的控件,赋指给Text,然后去Value当然自己转化最方便,
    编一个函数,去掉',',然后StrToInt,
      

  2.   

    分析string,将“ ,”去掉然后转换
      

  3.   

    如果不是变量,
    笨点的办法可以分别COPY出来再合一起STRTOINT..
      

  4.   


    var
      MyStr:string;
      i,j:integer;
    begin
      j:=0;
      MyStr:='ll123,23,89,56\890.7';
      if length(MyStr) > 0 then
      for i := 0 to length(MyStr) do
      if not (MyStr[i+1] in ['0'..'9','.']) then
      begin
        if length(copy(MyStr,j+1,i-j))>0 then
        listbox1.Items.Add(copy(MyStr,j+1,i-j));
        j:=i+1;
      end;end;
      

  5.   

    不知道formatfloat行不行?试试
      

  6.   

    swei56(泥巴)的程序可行。
    在此基础上改了下:
    Function Str2F(Str:String):double;
    var
      MyStr:String;
      i,j:integer;
    begin
      j:=0;
      if length(Str)>0 then
        For i:=0 to length(Str) do
          if not (Str[i+1] in ['0'..'9','.']) then
            begin
              if length(copy(Str,j+1,i-j))>0 then
                MyStr:=MyStr+copy(Str,j+1,i-j);
                j:=i+1;
            end;
      Result:=strtofloat(Mystr) ;
    end;
      

  7.   

    var
      i: integer;
      strSrc, strDes: string;
    begin
      strSrc := '123,456_789,123m.45';
      strDes := '';
      for i := 0 to Length(strSrc) do begin
        if strSrc[i] in ['0'..'9','.'] then
          strDes := strDes + strSrc[i];
      end;
      ShowMessage(strDes); //strDes 你要的数字字符串。
    end;
      

  8.   

    用StringReplace函数
    StringReplace('112,345,234',',','',[rfReplaceAll]);
      

  9.   

    谢谢各位,两段程序我还没细看,不知道行不行
    不过formatfloat肯定不行,因为弄反了,那个是把float变成string的
    去掉','也不行,因为不一定是',',也可能是其他符号
    我倒是想到一个,用ASCII判断0~9