• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Variant型の中を調べる。)

C++BuilderXE2でVariant型を調べる方法

このQ&Aのポイント
  • C++BuilderXE2でVarinat型を見る方法について教えてください。
  • Variant型は16バイトで構成されており、タイプに応じた解釈が必要です。
  • Memo1->Lines->Add("ISCHAR " + TargetFrameName->ISCHAR);という使い方はできません。

質問者が選んだベストアンサー

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

その辺の情報はヘッダファイルにあります。 プリミティブなデータ型は0~72です。 この他、0x2000は配列、0x4000は参照です。 >16396 これから見ると参照+12なので、型としては VARIANTのポインタになります。 つまり、元データの+8からの4バイトは対象 となるVARIANT型データへのポインタという ことになります。 以下を見てください。 http://msdn.microsoft.com/en-us/library/windows/desktop/aa380072(v=vs.85).aspx

qhtsige
質問者

お礼

詳細な情報ありがとうございます。 何度も苦吟して、ご指摘通りのDWORDはさらにVariant型への参照すなわちポインタになる(らしい)ことがわかりました。そうすると実体はさらにその先のVariant型のタイプを調べることになるのですね。 落ち着いて、調べることにします。予想ではascii文字になるはずな訳ですが。 また疑問がでてくれば教えて下さい。

その他の回答 (1)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

VARIANT型は先頭の16ビット整数の vtと言うメンバが型を示します。 文字列はVT_BSTR(=8)です。 文字列へのポインタはbstrValで 先頭から8バイト目にあります。

qhtsige
質問者

お礼

ご返事ありがとうございます。 やはり、中を見るためには自分で、タイプを判別しなければならないのですね。Variantのデータへのポインタ等は8バイト目にあることもmsdnでわかりました。 実際に見たいのは、PostDataでそのタイプを PostData->vt_PostData で見ると、16396 でした。このPostDataは実際にはIDとpasswordになると思うのですが、この中身を調べることはできるのでしょうか。8バイト目からの4バイトで示す領域が、実際のPostDataが格納されている場所にあたると思いますが、文字型などのようにそのサイズを知ることがわかりません。実際にサーバに送信されるわけですから、その長さの情報はどこかにあるはずなのですが。 このような当りの情報はないでしょうか。

関連するQ&A

専門家に質問してみよう