| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
DarkSpawn Lt JG


Registrado: 19 Mar 2005Mensajes: 72Ubicación: Coquimbo Chile
|
Publicado: Jue 16 Jun, 2005 9:31 pm Asunto: Empaquetar Imagenes u otros |
|
|
Hola a todos.
Estaba pensando, en los trabajos que aveces he hecho, cuando llamo a alguna imagen lo hago de la siguiente forma:
Image1->Picture->LoadFromFile("C:/Archivos de programa/mundodigital/Sertel/images/fondo803.jpg");
Eso significa que tengo que llamar a cada imagen y esta tiene que estar guardada suelta en cierta carpeta, osea pueden haber muchas imagenes en esa carpeta a vista de cualquiera que pueda borrar 1 sola de estas imagenes y el programa fallará al no encontrar el jpg.
¿¿Hay alguna manera de almacenar todas estas imagenes sueltas en un solo archivo (un estilo pak del quake u otro juegos) y la aplicación las pueda capturar??.
Quizas alguna dll, o algo parecido.
Gracias  _________________ -------------------------------------------
http://mundodigital.foro.st |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Vie 24 Jun, 2005 11:33 am Asunto: |
|
|
Hola DarkSpawn:
| Cita: | ¿¿Hay alguna manera de almacenar todas estas imagenes sueltas en un solo archivo (un estilo pak del quake u otro juegos) y la aplicación las pueda capturar??.
Quizas alguna dll, o algo parecido. |
Tienes diferentes formas de hacerlo, una de ellas es con la DLL, de manera similar a como se hace en este mensaje empaquetándolas dentro del ejecutable:
https://cppbuilder.es/viewtopic.php?t=771
En este caso los pasos para hacerlo dentro de la DLL:
- Creamos la DLL (DllProject.dll), desmarcamos la opción de usar la VCL, para que ocupe lo mínimo posible, guardamos el proyecto vacío en el directorio donde vayamos a trabajar.
1.- Copiamos al directorio de nuestro proyecto dos ficheros JPG a los que llamaremos "foto1.jpg" y "foto2.jpg".
2.- Creamos en el mismo directorio un fichero con extensión .RC al que llamaremos "MisRecursos.RC", dentro de el ponemos las siguientes líneas:
| Código: | /* MisRecursos.RC */
IMAGEN1 RCDATA "foto1.jpg"
IMAGEN2 RCDATA "foto2.jpg" |
3.- A continuación vamos a añadirlo al proyecto de nuestra DLL, para ello vamos al menú a la opción "Project >> Add to Project" y escribimos o seleccionamos ahí nuestro fichero "MisRecursos.RC". Compilamos, y con esto ya tenemos las imágenes agrupadas en la DLL.
- Ahora veremos como usar las imágenes que contiene la DLL en nuestro ejecutable:
1.- Declaramos la siguiente variable en la parte privada de la clase de nuestro Form:
| Código: | HINSTANCE hInstanceDll; |
2.- En el constructor de la clase del Form añadimos la línea siguiente:
| Código: | hInstanceDll = LoadLibrary("DllProject.dll"); |
3.- Y por ultimo como ejemplo añadimos un TImage (Image1) y un TButton, y en el OnClick de este lo siguiente:
| Código: | // Cargamos una de las imágenes de la DLL en el TImage
TJPEGImage* jpg = new TJPEGImage;
jpg->LoadFromStream(&TResourceStream(reinterpret_cast<int>(hInstanceDll),
"IMAGEN1", RT_RCDATA));
Image1->Picture->Assign(jpg);
delete jpg; |
|
|
| Volver arriba |
|
 |
Roid Cmdr

Registrado: 18 Ene 2004Mensajes: 135
|
Publicado: Vie 24 Jun, 2005 6:52 pm Asunto: Y en Runtime? |
|
|
Como se podría empaquetar un fichero en runtime a un ejecutable?
Se que se puede hacer, pq una vez me dijeron que hay un componente que lo hacia pero no me acuerdo del nombre del componente.
Un saludo. |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Vie 24 Jun, 2005 7:18 pm Asunto: |
|
|
| Cita: | | Como se podría empaquetar un fichero en runtime a un ejecutable? |
Para ello tienes la función del API "UpdateResource", aunque solo funciona en Windows NT/2000/XP/2003, pero mirando en cualquier buscador además de encontrar muchos detalles sobre como funciona encontraras métodos que emulan el funcionamiento de la misma para Windows 95/98/ME. Y seguramente algún componente que encapsula esta función. |
|
| Volver arriba |
|
 |
Roid Cmdr

Registrado: 18 Ene 2004Mensajes: 135
|
Publicado: Jue 30 Jun, 2005 8:23 am Asunto: |
|
|
Muchas gracias Leo, lo probaré.
Un saludo. |
|
| Volver arriba |
|
 |
Miguel Angel Torres Master


Registrado: 23 Abr 2006Mensajes: 282Ubicación: Siegen, Alemania
|
Publicado: Dom 07 May, 2006 2:32 am Asunto: Leo una pregunta sobre la .dll |
|
|
| Cuando yo hago todo lo que dices para empaquetar, eso funciona perfectamente. Pero cuando por ej quiero cambiar por decir la Imagen1 por otra, vuelvo a abrir el proyecto de la .dll (antes borro la .dll) y vuelvo a agregar el .rc(por si las moscas), borro la imagen vieja y meto la nueva y genero denuevo el .dll, Ahora hago los otros pasos q nombras, compilo, presiono el boton y juassssssssss, me sale la imagen vieja y no la nueva. Para que me funciones bien me toca volver a hacer todo, borrando todo lo que hice antes. No sé porque me pasa esto, pues se me hace raro ya q estoy haciendo todo bien (eso creo). Gracias por tu respuesta. |
|
| Volver arriba |
|
 |
|