2009-05-06 6 views
5

空の文字列としてnull BSTR(null WCHAR * pointer)を処理し、それに応じてBSTRを操作するすべてのコードを設計するのは、少なくとも一般的なプラクティスです。 this questionに答えて同じことを言う。null BSTRはどこで使用されていますか?

このプラクティスはどこに文書化されていますか?この大会を説明する公式文書はありますか?

答えて

5

まあ、その質問に対する受け入れられた答えで与えられたリンクは、Eric Lippertの記事、Eric's Complete Guide To BSTR Semanticsです。 LippertはCOMに関するよく知られた権限(特にスクリプティングアリーナで)です。は公式なドキュメントではありませんが、は確かにありません。

しかし、the official documentationこれは述べている:いいえデータ要素と

A BSTR空BSTRまたはNULL BSTRのいずれかです。空のBSTRは、存在するが長さゼロのデータ値を示します。 NULL BSTRは、存在しないデータ値を示します。だから、

(これらの2例は、アプリケーション内の別の方法で処理する必要があることを何も言うことはありませんが)、正式に彼らは若干異なる意味を持つ、データのない要素の両方BSTR秒です。この場合、私は確かにそれらを同じように扱うLippertの助言に従うでしょう。私にとって、実際の実装がどのように動作するかに関する現実の経験は、公式のBSTRドキュメントの1つの文よりも重要です。

+0

私はVBScriptのアーキテクトではなく、事実上でも事実上でも構いません。私はスクリプトチームの開発者であり、VBScriptで多くの機能を実装しましたが、私は確かに建築家レベルではありませんでした。 –

+0

エリック - 私はそのビットを削除しました。間違いをおかけして申し訳ありません。 –

4

マイケル・バーは私が受け入れられた答えであると思うものを与えます。残念ながら、MSDNのBSTRのページにこの習慣は記録されていません。また

、あなたはMSDNのドキュメントでこれらのページから、この動作を推測することができます

  • SysFreeStringページをbstrnullある場合、関数は単純に返すことを報告します。
  • SysStringLenページでは、bstrパラメータにnullを渡すと、文字列の長さがゼロになることが報告されています。
  • SysStringByteLenページでも同じ動作が報告されます。 nullは長さがゼロであることを意味します。

ただし、ドキュメントが完全ではありません。

  • SysReAllocString

    *pbstrnullであれば何が起こるかは言及しません。
  • SysReAllocStringLen*pbstrnullの場合はどうなるかについては言及していません。
関連する問題