delphi Int64类型的Web服务中的值为空

hwamh0ep  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(189)

我使用了一个包含数字元素的Web服务。 Delphi wsdl导入程序将其设置为Int64。
Web服务允许这个元素为空。但是,因为它被定义为Int64,所以当我在 Delphi 中使用Web服务而没有为它设置值时,它默认为0,因为它是Int64。但是我需要它为空,并且Web服务将不接受值0(0被定义为无效,并且Web服务返回错误)。
如果类型是Int64,如何传递空值?

ca1c2owp

ca1c2owp1#

空年龄(示例)

<E06_14></E06_14>

可以具有特殊含义,例如“未知”年龄。
在这种情况下,真实的的问题是如何在 Delphi 端使字段为nillable。
来自J.M. Babet的this post
对'nil'的支持一直是一个持续的问题。 Delphi 的几个内置类型是不可空的。所以我们选择使用类来处理这些情况(不优雅,但它工作)。所以在Delphi 2007的最新更新中,我添加了几个TXSxxxx类型来帮助解决这个问题。基本上:TXSBoolean,TXSInteger,TXSLong等。TXSString已经存在,但尚未注册。现在注册了。导入WSDL时,必须启用“对简单可为nillable的类型使用TXSString”选项,以使导入程序切换到TXSxxxx类型。在命令行上,它是“-0z+”选项。
DocWiki for the Import WSDL Wizard还显示了两个与nillable元素相关的选项:

*处理可为nillable和可选的元素-选中此选项可使WSDL导入程序生成有关可选和可为nillable的属性的相关信息。SOAP运行时使用此信息来允许某些属性为nil。
*对简单的nillable类型使用TXSString-WSDL标准允许简单类型在 Delphi 中为nil或在C中为NULL,但Delphi和C不允许。选中此选项可使WSDL导入程序通过使用 Package 类的示例来克服此限制。

相关问题