程序不断告诉我我写的数字不是整数

时间:2018-11-29 19:58:29

标签: delphi delphi-7

我编写了一个程序,它不断告诉我我输入的数字不是整数。

我正在输入100010110101,它会弹出并显示此错误:

image

代码:

procedure TForm1.Button1Click(Sender: TObject);
var
  m,lo,cshl,cdhl,cjhl,csl,cdl,cjl:integer;
begin
  m := StrToInt(Edit1.Text);
  cshl := m div 100000000000;
  cdhl := m div 10000000000 mod 10;
  cjhl := m div 10000000000 mod 100;
  csl := m div 1000000000 mod 1000;
  cdl := m div 100000000 mod 10000;
  cjl := m div 10000000 mod 100000;
  lo := cjl + cdl * 10 + csl * 100 + cjhl * 1000 + cdhl * 10000 + cshl  *100000;
  ShowMessage(IntToStr(lo));
end;

1 个答案:

答案 0 :(得分:12)

考虑Delphi(和大多数语言)如何处理32位整数:Wikipedia

在这种情况下,Integer是32位整数,小于-2,147,483,648或大于2,147,483,647的任何值都不是有效的32位整数。

“常识”将指示整数从-∞+∞,但是在计算机体系结构中不是这种情况。

如果要“发现”更多值,请使用Int64

在您的情况下,代码应如下所示:

var
  m,lo,cshl,cdhl,cjhl,csl,cdl,cjl:Int64;
begin
  m := StrToInt64(Edit1.Text);
  ...
end;

欢呼