In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

¿Como obtener un RCDATA almacenado en una DLL?

Foro público de Xailer en español
Responder
TSALES
Mensajes: 19
Registrado: Lun Ago 09, 2010 10:40 am

¿Como obtener un RCDATA almacenado en una DLL?

Mensaje por TSALES »

Hola
Necesito obtener el contenido de un fichero XML almacenado como RCDATA en un fichero RC. Si el RC está en el propio ejecutable puedo acceder mediante la función FindResource() y LoadResource pero si el RC está en una DLL creada con Xailer ¿Como puedo obtenerlo?
Saludos
Toni Sales
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9440
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

¿Como obtener un RCDATA almacenado en una DLL?

Mensaje por ignacio »

TSALES escribió el mar, 10 abril 2012 14:04Hola
Necesito obtener el contenido de un fichero XML almacenado como RCDATA en un fichero RC. Si el RC está en el propio ejecutable puedo acceder mediante la función FindResource() y LoadResource pero si el RC está en una DLL creada con Xailer ¿Como puedo obtenerlo?
Saludos
Toni Sales
nDll := 1 // orden de carga de la DLL
hRes := FindResource( GetInstance( nDll ), "cResName", RT_RCDATA )
cXml := LoadResource( 0, hRes )
Saludos
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
TSALES
Mensajes: 19
Registrado: Lun Ago 09, 2010 10:40 am

¿Como obtener un RCDATA almacenado en una DLL?

Mensaje por TSALES »

Ignacio
No consigo que funcione. Con lo que me indicas, el FindResource localiza el fichero pero el LoadResource no lee el contenido.
El codigo es el siguiente:
=====================
LOCAL hRes
LOCAL cXsl, h
LOCAL nHandle
LOCAL nDll := 1
nHandle := HB_LibLoad( "CodeInDll.dll" )
IF ( hRes := FindResource( GetInstance( nDll ), "LISTADOARTICULOSPORCLIENTE", RT_RCDATA ) ) != 0
cXsl := LoadResource( 0, hRes )
// Aquí­ el cXsl está vacio.
IF ( h := FCreate( "f:Prueba.xml" ) ) != -1
// Save the main part
FWrite( h, cXsl )
FClose( h )
ENDIF
ENDIF
HB_LibFree( nHandle )
=========================
El fichero correponde a un listado FastReport almacenado en el fichero RC e incluido en el RC del proyecto CodeInDll.dll:
LISTADOARTICULOSPORCLIENTE RCDATA MOVEABLE "D:ArticulosPorCliente.fr3"
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9440
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

¿Como obtener un RCDATA almacenado en una DLL?

Mensaje por ignacio »

Prueba con:
hRes := FindResource( GetInstance( nDll ), "cResName", RT_RCDATA )
cXml := LoadResource( GetInstance( nDll ), hRes )
Saludos
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
TSALES
Mensajes: 19
Registrado: Lun Ago 09, 2010 10:40 am

¿Como obtener un RCDATA almacenado en una DLL?

Mensaje por TSALES »

Gracias Ignacio
Ahora funciona perfecto.
Toni Sales
Responder