8

数値要素を持つWebサービスを利用しています。DelphiwsdlインポーターはそれをInt64として設定します。

Webサービスでは、この要素を空白にすることができます。ただし、Int64として定義されているため、Delphiで値を設定せずにWebサービスを使用すると、Int64であるため、デフォルトで0になります。しかし、空白にする必要があり、Webサービスは値0を受け入れません(0は無効として定義され、Webサービスによってエラーを返します)。

タイプがInt64の場合、どうすれば空白の値を渡すことができますか?

4

1 に答える 1

8

空の年齢(例)

<E06_14></E06_14>

特別な意味を持つ可能性があります。たとえば、「不明な」年齢などです。

この場合、本当の問題は、Delphi側でフィールドをnillableにする方法です。

JM Babetのこの投稿から:

'nil'のサポートは継続的な問題です。Delphiのいくつかの組み込み型はnull許容ではありません。そのため、これらのケースにはクラスを使用することを選択しました(エレガントではありませんが、機能します)。そのため、Delphi 2007の最新の更新では、これを支援するためにいくつかのTXSxxxxタイプを追加しました。基本的に:TXSBoolean、TXSInteger、TXSLongなど。TXSStringはすでに存在していましたが、登録されていませんでした。今です。WSDLをインポートするときは、[単純なnillableタイプにTXSStringを使用する]オプションを有効にして、インポーターをTXSxxxxタイプに切り替える必要があります。コマンドラインでは、「-0z+」オプションです。

WSDLインポートウィザードのDocWikiには、 nillable要素に関連する2つのオプションも表示されます。

  • nillableおよびoptional要素の処理-このオプションをオンにすると、WSDLインポーターがオプションおよびnillableプロパティに関する関連情報を生成します。この情報は、特定のプロパティをnilにするためにSOAPランタイムによって使用されます。

  • 単純なnillable型にはTXSStringを使用する-WSDL標準では、DelphiおよびC ++では単純な型をnilにすることができますが、DelphiおよびC++では許可されていません。このオプションをオンにすると、WSDLインポーターがラッパークラスのインスタンスを使用してこの制限を克服します。

于 2012-09-15T06:15:40.100 に答える