代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
  num:string;
  x:integer;
begin
  num:=edit1.text;
  x:=strtoint(num);
//  showmessage(inttostr(x));
end;请问怎么解决??????????????????

解决方案 »

  1.   

    可以亚,
    var
    x:integer;
    s:string;
    begin
      s:='12';
      x:=2;
      x:=x+strtoint(s);
    end;
    绝对可以
      

  2.   

    那你们看看这样的,为什么不能?
    var 
      maxaccount:string;
      numaccount,num:integer;
    .............................
    maxaccount:=trim(userdata.cardadoqry.Fields[1].asstring);
    //假设:maxaccount='8888888888'
    numaccount:=strtoint(maxaccount);
    num:=numaccount+1;
    edt_firstaccount.Text:=inttostr(numaccount);
    ................................这段代码一执行,保证你们出错,试试看!!!
      

  3.   

    userdata.cardadoqry.Fields[1].asstring可能是个不能转化为integer的字符串,如:‘dd123’,应该是这样的才对,’123‘
      

  4.   

    我能保证的是:userdata.cardadoqry.Fields[1].asstring取出来的绝对是数字从0到9的任意组合。
      

  5.   

    Integer ?147483648..2147483647
    如果假设:maxaccount='8888888888'成立的话,那肯定不行的。
    具体看你那是提示什么错误。另外,numaccount:=strtointDef(maxaccount, 0);  //绝对可以。
      

  6.   

    实在不行的话,还是用
    function StrToInt64Def(const S: string; Default: Int64): Int64;
      

  7.   

    说了这么久,忘记把错误提示贴出来了:Project .. raised exception class EConvertTrror with message '8888888888' is not a valid integer value'.
      

  8.   

    用这两个函数:strtointDeffunction StrToInt64Def(const S: string; Default: Int64): Int64;是没有出错提示,但是加出来的结果不对。
      

  9.   

    numaccount,num:integer;
    这个肯定要改啦。numaccount,num:int64;
      

  10.   

    如果:maxaccount='8888888888'的话,用:StrToInt64Def或StrToIntDef转换,得出8888888889结果,请问怎么写?
      

  11.   

    to jenemery(小熊):
       什么意思,不明白转化后怎么会有那个结果?
      

  12.   

    var
      maxaccount:string;
      numaccount,num:int64;
    begin
    //  maxaccount:=trim(userdata.cardadoqry.Fields[1].asstring);
      maxaccount :='8888888888' ; //假设:
      numaccount := strtoint64Def(maxaccount, 0);
      num:=numaccount+1;
    //  edt_firstaccount.Text:=inttostr(numaccount);  //你这里显示的是numaccount,而不是NUM
      showmessage(IntToStr(num)) ;
    end ;
      

  13.   

    错误很明显嘛!'8888888888'表示十亿位的数,而Integer型是32位的,表示不了这么大的数。所以,
      numaccount:=strtoint(maxaccount);
    绝对出错。
      

  14.   

    那就让你们看看完整的程序段:  错误提示:就是我上面提到的那个procedure Tmainform.cardreg_cbChange(Sender: TObject);
    var
      i:integer;
      str,regionid:string;
      maxcard:string;
      maxaccount:string;
      numcard:integer;
    //  numaccount:integer;
    begin
      edt_firstcardid.Text:='';
      edt_firstaccount.Text:='';
      cardid_lb.Items.Clear;
      cardaccount_lb.Items.Clear;
      if cardreg_cb.ItemIndex<>-1 then
      begin
        str:=cardreg_cb.Items.Strings[cardreg_cb.ItemIndex];
        for i:=0 to Length(str) do
        begin
          if (ord(str[i])>57)  or (ord(str[i])<48) then
            regionid:=copy(str,1,i-4);
        end;    try
          with userdata.cardadoqry do
            begin
               close;
               sql.clear;
               sql.add('select min(card_id),max(card_id),min(card_account),max(card_account) from card where card_id like '+''''+'%'+regionid+'%'+''''+' GROUP by create_date');
               open;
            end;
            if userdata.cardadoqry.RecordCount<>0 then
            begin
                for i:=0 to userdata.cardadoqry.RecordCount-1 do
                begin
                  cardid_lb.Items.Add(trim(userdata.cardadoqry.Fields[0].asstring)+'------'+trim(userdata.cardadoqry.Fields[1].asstring));
                  cardaccount_lb.Items.Add(trim(userdata.cardadoqry.Fields[2].asstring)+'-------'+trim(userdata.cardadoqry.Fields[3].asstring));
                  userdata.cardadoqry.Next;
                end;            try
                  with userdata.cardadoqry do
                  begin
                    close;
                    sql.clear;
                    sql.add('select max(card_id),max(card_account) from card where card_id like '+''''+'%'+regionid+'%'+'''');
                    open;
                  end;              maxcard:=copy(userdata.cardadoqry.Fields[0].asstring,5,8);
                  maxaccount:=userdata.cardadoqry.Fields[1].asstring;
    //              maxaccount2:=copy(userdata.cardadoqry.Fields[1].asstring,6,10);
    //              maxaccount:=trim(userdata.cardadoqry.Fields[1].asstring);
                  numcard:=strtoint(maxcard);
                  numaccount:=strtoint(maxaccount); //             showmessage(maxaccount1+maxaccount1);              numcard:=numcard+1; /////////////没有考虑卡序号到了99999999的时候做法
                  numaccount:=numaccount+1;
    //              num:=1;
                  edt_firstcardid.Text:=copy(userdata.cardadoqry.Fields[0].asstring,1,4)+inttostr(numcard);
    //              edt_firstaccount.text:=maxaccount;
                  edt_firstaccount.Text:=inttostr(numaccount);            except
                  MessageDlg('数据库连接失败,请重试!',mtinformation,[mbok],0);
                end;        end;
        except
          showmessage('数据库连接失败');
        end;
      end;
    end;