我编写了一个程序,它不断告诉我我输入的数字不是整数。
我正在输入100010110101
,它会弹出并显示此错误:
代码:
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;
答案 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;
欢呼