我在尝试存储身份证号码,甚至是电话号码作为整数值时遇到了一些麻烦。
这是我尝试过的:
begin
InfoFile := TStringList.Create;
ID := StrToInt(edtID.Text);
PhoneNumber := StrToInt(edtPhone.Text);
我继续***** is not a valid integer value
。首先,我知道数字对于整数值来说太大了,有没有办法压缩或以某种方式缩小?或者我应该不将它用作变量?我真的不知道我是否有太多意义。
任何建议将不胜感激!
答案 0 :(得分:2)
很明显,您无法压缩电话号码。压缩必须是可逆的。如果您可以压缩数字,例如,您可以存储32位的40位值,那么您的压缩将不可逆。有2个 32 不同的值可以存储在32位值中。如果有更多 2 32 不同的电话号码,然后压缩不可能帮助。
如果必须存储为整数,可能最方便的解决方案是将数字存储为64位整数Int64
。使用StrToInt64
从字符串转换。可以存储在64位整数中的最大值是9,223,372,036,854,775,807
。
在尝试拨打StrToInt64
之前,您显然需要清理字符串。你需要删除空格,连字符等。你确定你可以将数字存储为整数。例如,我可能会将英国电话号码写为+44 151 876 2765
。您将如何处理+
?
因此,虽然Int64
为您提供了更多范围,但您可能希望考虑该值是否更好地存储在字符串中。