【问题标题】:Delphi strToint64 initial with zero valueDelphi strToint64 初始值为零
【发布时间】:2019-03-08 15:02:58
【问题描述】:

在 Delphi XE8 中,我必须将 '03213213210' 字符串转换为 int64 a:=strToint64('03213213210');

我收到 a = 3213213210;我怎样才能收到? a = 03213213210;
帮我。谢谢。

【问题讨论】:

  • 您的变量a 是一个数值。没有前导零的概念。仅当您将数值表示为字符串时才有意义。因此,您的问题是基于错误的前提。
  • 我必须将一个值返回给一个由我导入 delphi 的 WS WSDL 定义的类和一个数据类型 pIva = int64。该值在 int64 类中定义。我必须发送增值税号“03213213210”。
  • @carmeloconny 然后 int64 是错误的类型,你需要一个字符串来代替
  • 是的,我变成了字符串

标签: string delphi-xe8 int64


【解决方案1】:

Int64 是一个数值。它有一个数字。数字没有格式、前导零、表示基数等概念。数字只是一个数字。

二进制、八进制、十进制、十六进制等概念对数字的值没有影响,只是它的表示。同样,设置位数等格式要求与值无关,而是用于显示的值的格式属性。

简而言之,前导零不是数字的属性。您的 Int64 变量包含数字。当您选择显示它时,您可以选择强制使用一组数字,例如通过填充前导零来实现该数字。但这不是数字的属性,Int64 变量。这是您选择如何显示它的属性。

因此,如果您确实需要将值作为Int64 发送,那么您无需再做任何事情。如果它需要以 11 位数字显示,左填充为零,那么格式化是显示它的人的责任。另一方面,您可能应该将值保存为字符串以保留格式。

我无法确定上述两个选项中的哪一个是您需要做的,但我可以确定尝试在 Int64 中存储前导零不是解决方案,因为这是不可能的。

【讨论】:

  • 我必须发送 03213213210 如何向左添加填充?这个 int64 总是有 11 位数字。 es.: 00012345678
  • 我不能一直重复自己。你知道1=01吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-07
  • 1970-01-01
相关资源
最近更新 更多