如何将 SQL Server 类型表示numeric(38,0)
为 IDL 类型(COM 类型库)?
非常感谢您的帮助!
PS 例如,SQL Server 类型int
是long
IDL 中的类型。
如何将 SQL Server 类型表示numeric(38,0)
为 IDL 类型(COM 类型库)?
非常感谢您的帮助!
PS 例如,SQL Server 类型int
是long
IDL 中的类型。
COM 中的数字可能是:
Int64
) - 最多 19 位有效数字;double
- 15 - 17 位有效十进制数字精度。因此,对于 38 位数字,这些类型都不符合您的要求。您可以使用 获得最佳分辨率Int64
,但如果您的值高于 9,223,372,036,854,775,807,您将达到溢出。
我认为更容易兼容的类型是一个很好的旧 BSTR ( widestring
),您可以在其中存储任意数量的数字 - 但编码为纯文本。在代码方面,您将需要一个 BCD 库来处理您的高分辨率数字:没有 Delphi 本机类型(甚至extended
)具有这样的分辨率。
编辑:另一个选项(感谢 Ondrej 的提议)是一个字节数组。恕我直言,COM 二进制数组不如文本内容容易(即使它使用较少的内存,速度效率也较低)。编码选项可能是很好的旧 BCD。您可能能够在 COM 对象的两侧找到库。