空の文字列としてnull BSTR(null WCHAR * pointer)を処理し、それに応じてBSTRを操作するすべてのコードを設計するのは、少なくとも一般的なプラクティスです。 this questionに答えて同じことを言う。null BSTRはどこで使用されていますか?
このプラクティスはどこに文書化されていますか?この大会を説明する公式文書はありますか?
空の文字列としてnull BSTR(null WCHAR * pointer)を処理し、それに応じてBSTRを操作するすべてのコードを設計するのは、少なくとも一般的なプラクティスです。 this questionに答えて同じことを言う。null BSTRはどこで使用されていますか?
このプラクティスはどこに文書化されていますか?この大会を説明する公式文書はありますか?
まあ、その質問に対する受け入れられた答えで与えられたリンクは、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つの文よりも重要です。
マイケル・バーは私が受け入れられた答えであると思うものを与えます。残念ながら、MSDNのBSTR
のページにこの習慣は記録されていません。また
、あなたはMSDNのドキュメントでこれらのページから、この動作を推測することができます
SysFreeString
ページをbstr
がnull
ある場合、関数は単純に返すことを報告します。SysStringLen
ページでは、bstr
パラメータにnull
を渡すと、文字列の長さがゼロになることが報告されています。SysStringByteLen
ページでも同じ動作が報告されます。 null
は長さがゼロであることを意味します。ただし、ドキュメントが完全ではありません。
SysReAllocString
は*pbstr
がnull
であれば何が起こるかは言及しません。SysReAllocStringLen
*pbstr
がnull
の場合はどうなるかについては言及していません。
私はVBScriptのアーキテクトではなく、事実上でも事実上でも構いません。私はスクリプトチームの開発者であり、VBScriptで多くの機能を実装しましたが、私は確かに建築家レベルではありませんでした。 –
エリック - 私はそのビットを削除しました。間違いをおかけして申し訳ありません。 –