2009-02-20 91 views
1

對於某些文件操作,我們使用VB6的PropertyBag對象通過Content屬性將各種項目轉換爲bytearray。然後我們將字節陣列保存爲二進制文件的一部分。稍後當我們加載文件時,我們讀取文件,讀入bytearray並使用propertybag的readproperty重新構建該項目。我們大量使用這些來存儲客戶徽標等圖像。在.NET中轉換VB6 PropertyBag

.NET框架對PropertyBags的工作有什麼支持? Othan比編寫一個COM助手DLL。屬性包是VB6唯一的構造,還是屬於一般OLE/COM自動化框架的一部分?

我希望避免寫一個VB6助手DLL和直接訪問(通過聲明)所需的COM函數。我不想複製功能,而是將存儲在bytearray中的對象轉換爲與.NET等價的對象。

注意:我不想在.NET中實現屬性包的功能。只能讀取保存的VB6 Property Bag的字節。

回答

1

你可以看看Edanmo的加載並保存圖片到他的old VB6 sample page上的字節數組樣本。這非常簡單,可以用來「序列化」任何實現IPersistStream接口的對象,例如ADODB.Recordset。 VB6的PropertyBag爲對象使用IPersistStream,並可能實現「自定義」VT_Xxx變體類型序列化。

順便說一下,Edanmo的代碼片段允許您讀取通過複製/粘貼存儲到Access網格的圖像列的圖像。

+0

這真是太好了,謝謝。 – 2009-10-06 14:24:57

2

.NET中PropertyBags的支持爲0。對象的隔離替換PropertyBag構造。

所以當我看到它時,你有兩種選擇。

  1. Byte the bullet and writer the 10 or 20 line Interop dll。
  2. 分析序列化屬性包的內容,看看是否可以將其解碼並找出圖像和流等

我知道我會走向哪一個的偏移。

+0

我希望物業包在OLE引擎中做得很深。但它看起來像interop是要走的路。謝謝 – 2009-04-17 12:23:09