将‘4294967295’转换成cardinal时,会抛出转换错误,''4294967295'不是有效的integer,怎么办?

解决方案 »

  1.   

    Type Range Format
    Integer -2147483648..2147483647 signed 32-bit超出范围了当然会出错了.//自己写个函数转换不就OK了.
    function StrToInt64(strTmp: string): int64;
    var
      i: integer;
    begin
      result:= 0;  for i:= 1 to Length(strTmp) do
      begin
        if (strTmp >= '0') and (strTmp <= '9') then
          Result:= Result * 10 + (Ord(strTmp[i]) - 48)
        else begin
          Result:= 0;   //这里可以抛出一个异常来代替
          exit;
        end;
      end;
    end;
      

  2.   

    StrToInt函数的返回值Integer类型, 它是无法正确转换'4294967295'这个值的。
    换用StrToInt64函数就行了(需要引用SysUtils单元)。
    var
      i : cardinal;
    begin
      i := StrToInt64('4294967295');
      ShowMessage (IntToStr(i));
    end;