2

特定のファイル操作では、VB6 の PropertyBag オブジェクトを使用して、Content プロパティを介してさまざまな項目を bytearray に変換します。次に、bytearray をバイナリ ファイルの一部として保存します。後でファイルをロードするときに、ファイルを読み戻し、bytearray を読み取り、プロパティバッグの readproperty を使用して項目を再構成します。これは、顧客のロゴなどの画像を保存するためによく使用されます。

PropertyBags を操作するために、.NET フレームワークにはどのようなサポートがありますか? COMヘルパーDLLを書くよりも。プロパティ バッグは VB6 のみの構造ですか、それとも一般的な OLE/COM オートメーション フレームワークの一部ですか?

私が望んでいるのは、VB6 ヘルパー DLL の記述を避け、必要な COM 関数に直接 (宣言を介して) アクセスすることです。機能を再現するつもりはありませんが、bytearray に格納されているオブジェクトを .NET に相当するものに変換するつもりです。

注:プロパティ バッグの機能を .NET に実装することには興味がありません。保存された VB6 プロパティ バッグのバイトを読み取ることができる場合のみ。

4

3 に答える 3

3

.NET での PropertyBags のサポートはありません。オブジェクトのシリアル化は、PropertyBag コンストラクトを置き換えます。

だから私が見るように、あなたには2つの選択肢があります。

  1. 箇条書きで、10 行または 20 行の Interop DLL を記述します。
  2. シリアル化されたプロパティ バッグの内容を分析し、それをデコードして画像やストリームなどのオフセットを把握できるかどうかを確認します。

私はどちらに向かっているのか知っています。

于 2009-04-17T07:13:19.967 に答える
1

Edanmo のLoad and save pictures to byte arraysサンプルは、彼の古い VB6 サンプル ページで確認できます。これは非常に単純で、たとえば ADODB.Recordset などの IPersistStream インターフェイスを実装する任意のオブジェクトを「シリアル化」するために使用できます。VB6 の PropertyBag は、オブジェクトに IPersistStream を使用しており、おそらく「カスタム」VT_Xxx バリアント型シリアル化を実装しています。

ところで、Edanmo のコード スニペットを使用すると、Access グリッドの画像列にコピー/貼り付けして保存された画像を読み取ることができます。

于 2009-10-05T19:45:54.670 に答える