FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
TresourceStream con archivo de Recursos .rc
Anteriormente en Studio 2010 tenia un código que no consigo hacer funcionar en RIO 1.3.
Tenia este código que podía llamar a varios archivos del fichero de recursos, pero ahora no sé como hacerlo sin tener que crear un puntero para cada uno de los ficheros contenido en el fichero de recursos. CODIGO ANTIGUO: Código PHP:
[ilink32 Error] Error: Unresolved external 'System::Classes::TResourceStream::{1173}...' referenced from D:\BDS_10_3\TPV-START\WIN32\DEBUG\UNIDADTPVBARMAN_START.OBJ [ilink32 Error] Error: Unable to perform link Ahora solo he encontrado esta forma de hacerlo con la creación de un PUNTERO, puesto que la forma anterior compila en .cpp de la llamada pero al generar el fichero del proyecto me da error y no los consigo hacer funcionar. CODIGO NUEVO: Código PHP:
Código PHP:
|
#2
|
||||
|
||||
Cita:
Cita:
Cita:
Supongo que tú tienes claro el problema y lo que necesitas, pero creo que para los que no sabemos nada la pregunta es bastante confusa. Un saludo.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#3
|
|||
|
|||
Creo haber realizado la pregunta correctamente y bien explicada.
La pregunta simple viendo el fichero de recursos que contiene varios archivos es que con el código que muestro como puedo acceder a los otros ficheros del recurso desde el mismo PUNTERO que he creado. Código PHP:
C RCDATA "dat.cab" R RCDATA "rar.exe" en el codigo extraigo el "dat.cab" y la pregunta es: ¿Como hago ahora para extraer el "rar.exe" antes de destruir el PUNTERO B*? |
#4
|
||||
|
||||
Puedes hacer algo como esto:
Código PHP:
Saludos. |
#5
|
|||
|
|||
SaveResource(L"C", CAB); NO RESPONDE...
Necesita alguna LIBRERIA? O de qué objeto desciende? |
#6
|
|||
|
|||
Gracias pero lo que haces es automatizar los procesos por medio de una función, pero crea y destruye el PUNTERO en cada llamada.
Eso no es lo que preguntaba, ya se que así se ahorra código... pero no es lo que preguntaba precisamente. La pregunta correcta sin poner CODIGO seria... Como puedo EXTRAER varios FICHEROS de varios TIPOS Y CONTENIDOS en un Fichero de RECURSOS sin tener que crear un puntero con [new] y destruir con [delete] en cada llamada? Antes en Studio 2010 podía hacer esto: Código PHP:
Última edición por jesusgandia1966 fecha: 22-02-2024 a las 16:24:49. |
#7
|
|||
|
|||
EN CUALQUIER CASO GRACIAS POR EL APORTE, no se me había ocurrido hacer una función tal como muestras para simplificar muchísimo el código, ya que tengo que extraer 33 ficheros del RECURSO.
GRACIAS OTRA VEZ. |
#8
|
||||
|
||||
En C++ puedes crear un objeto directamente con el constructor (función de nombre igual al de la clase) o indirectamente con el operador new + el constructor. En la primera forma el objeto vive lo que dure su ámbito, en la segunda vive hasta que uses delete.
El las clases de la VCL debes usar el operador new por exigencia de la VCL. Aunque funcione la cración directa de TResourceStream con versiones de Builder (en Berlin funciona) no es la forma apropiada y la ayuda te indica que debes crearlo de forma indirecta. No se porqué tienes esa idea de no destruir el puntero, ten en cuenta que cada instancia que usas es un objeto diferente que se va a destruir sola, si usas la forma directa o con delete si usas la indirecta. Existe una forma de que el puntero se autodestruya con los punteros inteligentes: auto_ptr, pero el puntero se destruirá de igual forma tras el uso de cada instancia. Si lo que pretendes es usar auto_ptr, aquí tienen un esquema: Código:
#include <memory> ........... if(!FileExists(RAR)) std::auto_ptr <TResourceStream> (new TResourceStream(0, L"C", RT_RCDATA))->SaveToFile(RAR); if(!FileExists(IMG)) std::auto_ptr <TResourceStream> (new TResourceStream(0, L"R", RT_RCDATA))->SaveToFile(IMG); Usa Templates en lugar de una función como te puse arriba que quizás es más fácil de entender. Eso significa que el compilador expande el código del template a cada llamada. Saludos. |
#9
|
||||
|
||||
...............................................
|
#10
|
|||
|
|||
Si me quedó claro, y entendí que al crear el puntero con:
Código PHP:
Es normal crear una instancia para cada fichero contenido en el fichero de recursos y empleando la función sencilla que escribiste a mi entender es la forma correcta. Código PHP:
AYUDA STUDIO 10.3.3: Código PHP:
Gracias escafandra... |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Problema con archivo de recursos | danielmj | Varios | 10 | 28-04-2014 15:40:25 |
Extraer Archivo de los recursos | odiseeus | C++ Builder | 1 | 29-10-2013 15:41:53 |
PNG en archivo de recursos (.res) | jandro | Varios | 10 | 27-01-2010 21:00:45 |
Archivo de recursos | Esau | Varios | 3 | 04-11-2004 11:13:44 |
Crear un archivo de recursos | soul6301 | Varios | 1 | 19-08-2004 21:24:07 |
|