如何将ID号或电话号码存储为整数而不出错?

时间:2014-03-02 12:30:11

标签: delphi delphi-7

我在尝试存储身份证号码,甚至是电话号码作为整数值时遇到了一些麻烦。

这是我尝试过的:

begin
  InfoFile := TStringList.Create;


    ID := StrToInt(edtID.Text);
    PhoneNumber := StrToInt(edtPhone.Text);

我继续***** is not a valid integer value。首先,我知道数字对于整数值来说太大了,有没有办法压缩或以某种方式缩小?或者我应该不将它用作变量?我真的不知道我是否有太多意义。

任何建议将不胜感激!

1 个答案:

答案 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为您提供了更多范围,但您可能希望考虑该值是否更好地存储在字符串中。