Pregunta

Para ciertas operaciones de archivo que utilizamos objeto PropertyBag de VB6 para convertir varios elementos a una bytearray través de la propiedad de contenido. a continuación, se guarda la bytearray como parte de un archivo binario. Más tarde, cuando cargamos el archivo se lee el archivo de vuelta, leído en la bytearray y reconstituir el elemento utilizando ReadProperty del PropertyBag. Utilizamos esta mucho para almacenar imágenes como el logotipo del cliente.

¿Qué apoyo NET Framework tiene para trabajar con PropertyBags? Othan que escribir un archivo DLL COM ayudante. Bolsas son propiedad de una única VB6 construir o que son parte del marco / automatización OLE COM en general?

Lo que estoy esperando es evitar escribir un archivo DLL VB6 ayudante y acceder directamente (a través declara) las funciones COM necesarios. No estoy buscando para replicar la funcionalidad sino convertir el objeto almacenado en el bytearray en su equivalente .NET.

Nota: No estoy interesado en la implementación de la funcionalidad de una bolsa de propiedades en .NET. Sólo ser capaz de leer los bytes de un VB6 salvado Propiedad bolsa.

¿Fue útil?

Solución

Se puede extraer de Carga de Edanmo y guardar las imágenes en matrices de bytes muestra en su antigua muestra de VB6 página . Es muy simple y se puede utilizar para "serializar" cualquier objeto que implementa la interfaz IPersistStream como ADODB.Recordset por ejemplo. PropertyBag de VB6 está utilizando IPersistStream para objetos y probablemente implementa "costumbre" VT_Xxx variante de tipos de serialización.

Por cierto, fragmento de código de Edanmo le permite leer las imágenes almacenadas a través de copiar / pegar a una columna de la imagen de una red de acceso.

Otros consejos

Hay 0 apoyo a PropertyBags en .NET. Serailisation de objetos reemplaza el constructo PropertyBag.

Así como lo veo tienes 2 opciones.

  1. Byte la bala y escribir el 10 o 20 línea de DLL de interoperabilidad.
  2. Analizar el contenido de la bolsa de propiedades serializado y ver si se puede decodificar y entender los desplazamientos de las imágenes y arroyos, etc.

Yo sé cuál me gustaría ser la partida para.

Es importante señalar que se puede acceder directamente a la VB6 PropertyBag de .NET haciendo referencia a la DLL de tiempo de ejecución de VB6 en su proyecto.

Añadir una referencia a: C:\WINDOWS\SysWow64\MSVBVM60.DLL (o poder, por medio de la carpeta System32)

y, a continuación, ver PropertyBag en el explorador de objetos:

introducir descripción de la imagen aquí

Tenga en cuenta que esta clase de VB6 no tiene funcionalidad para la lectura / escritura de archivos de disco, las matrices de bytes, etc. sólo gestiona los datos de la memoria (que yo sepa). Así que esto por sí solo no resuelve el problema de cómo guardar / cargar datos en el formato que el PropertyBag se almacena en.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top