Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Empaquetar Imagenes u otros

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Empaquetar Imagenes u otros Responder citando

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 Smile
_________________
-------------------------------------------
http://mundodigital.foro.st
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Y en Runtime? Responder citando

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.

Sad


Un saludo.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Muchas gracias Leo, lo probaré.


Un saludo.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Leo una pregunta sobre la .dll Responder citando

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
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.