Domanda

Per alcune operazioni sui file che usiamo oggetto PropertyBag di VB6 per convertire i vari elementi per un ByteArray tramite la proprietà Content. Abbiamo poi salvare il ByteArray come parte di un file binario. Più tardi, quando si carica il file si legge di nuovo il file, letto alla ByteArray e ricostituire l'elemento utilizzando ReadProperty del PropertyBag. Usiamo questo molto per memorizzare le immagini come il logo del cliente.

Quale supporto framework .NET ha per lavorare con PropertyBags? Othan che scrivere una DLL COM aiutante. Sono borse di proprietà di un VB6 solo costruire o sono parte del quadro / automazione COM generale OLE?

Quello che spero è di evitare di scrivere una DLL VB6 aiuto e l'accesso diretto (tramite dichiara) le funzioni necessarie COM. Non sto cercando di replicare la funzionalità, ma piuttosto convertire l'oggetto memorizzato nel ByteArray nella loro .NET equivalente.

Nota: non sono interessati ad implementare la funzionalità di un elenco di proprietà in .NET. Solo di essere in grado di leggere i byte di un elenco di proprietà VB6 salvato.

È stato utile?

Soluzione

È possibile controllare di Edanmo Carica e salvare le immagini array di byte del campione sul suo vecchia pagina di esempio VB6 . E 'molto semplice e può essere usato per "serializzare" qualsiasi oggetto che implementa l'interfaccia IPersistStream come ADODB.Recordset per esempio. PropertyBag di VB6 sta usando IPersistStream per gli oggetti e, probabilmente, implementa VT_Xxx variant-tipi "custom" serializzazione.

A proposito, frammento di codice di Edanmo consente di leggere le immagini memorizzate tramite copia / incolla a una colonna immagine di una griglia di accesso.

Altri suggerimenti

C'è 0 supporto per PropertyBags in .NET. Serailisation di oggetti sostituisce il costrutto PropertyBag.

Così come la vedo io si hanno 2 scelte.

  1. Byte il proiettile e scrivere il 10 o 20 linee Interop dll.
  2. Analizzare il contenuto della borsa di proprietà serializzato e vedere se è possibile decodificare e capire gli offset delle immagini e corsi d'acqua, ecc.

Lo so quale mi piacerebbe essere in direzione di.

E 'opportuno sottolineare che è possibile accedere direttamente al VB6 PropertyBag da .NET facendo riferimento alla DLL runtime VB6 nel progetto.

Aggiungere un riferimento a: C:\WINDOWS\SysWow64\MSVBVM60.DLL (o potrebbe dalla nella cartella System32)

e si vedrà, quindi PropertyBag nel browser oggetto:

entrare descrizione dell'immagine qui

Si noti che questa classe VB6 non dispone di funzionalità per la lettura / scrittura di file su disco, array di byte, ecc E gestisce i dati contenuti in memoria (per quanto ne so). Quindi, questo da solo non risolve il problema di come salvare / caricare i dati in qualsiasi formato il PropertyBag è stato immagazzinato in.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top