| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
WBuilder Invitado
|
Publicado: Mar 13 Mar, 2001 1:09 pm Asunto: transporte de ficheros en un ejecutable |
|
|
Hola a todos... He intentado llevar dentro de mi ejecutable un archivo (uno es una imagen JPG, y otro es otro pequeño programa), pero nada... lo intenté con OleContainer1->LoadFromFile... y para descargarlo, OleContainer1->SaveAsDocument... OleContainer1->SaveToFile... Lo bueno de todo esto, es que me descarga el fichero en el lugar que yo le digo, pero despues al querer abrirlo, si es el JPG, el programa que utilizo (Corel) me dice que no lo reconce, y el programilla que descargo tampoco lo puedo ejecutar ya que me da un error. Puede ser (seguro) que no utilizo la técnica adecuada para transportar objetos de este tipo, por lo que agradecería que me ayudaran. GRACIAS
|
|
| Volver arriba |
|
 |
_Leo Invitado
|
Publicado: Mar 13 Mar, 2001 8:01 pm Asunto: transporte de ficheros en un ejecutable |
|
|
| Hola WBuilder: Para incluir otros ficheros dentro de tu programa tienes que usar un fichero de recursos .RC (.RES compilado). Por ejemplo, vamos a ver paso a paso como incluir dentro del ejecutable de nuestro proyecto un fichero .jpg y otro .exe: 1.- Copiamos al directorio de nuestro proyecto un fichero .jpg al que llamaremos "foto.jpg" y copiamos un ejecutable también en el mismo directorio, por ejemplo vamos a copiar el "notepad.exe" que encontramos en el directorio de Windows. 2.- Creamos en el mismo directorio un fichero con extension .RC al que llamaremos "MisRecursos.RC", dentro de el ponemos las siguientes lineas:
/* MisRecursos.RC */ MI_IMAGEN RCDATA "foto.jpg" MI_PROGRAMA RCDATA "notepad.exe" 3.- A continuación vamos a añadirlo a nuestro proyecto, para ello vamos al menú a la opción "Project >> Add to Project" y escribimos o seleccionamos ahí nuestro fichero "MisRecursos.RC".
4.- Y por ultimo vamos a ver como usarlo dentro de nuestro código:
- Por ejemplo si queremos cargar la imagen en un TImage: // Añadir: #include <jpeg.hpp> // Añadimos un TImage y un TButton // y al OnClick del mismo lo siguiente TJPEGImage *jpg = new TJPEGImage; jpg->LoadFromStream( &TResourceStream(0, "MI_IMAGEN", RT_RCDATA) ); Image1->Canvas->Draw(0, 0, jpg); delete jpg; - o bien si queremos extraer los ficheros: // Para probar vamos a copiarlos en c:\ // Añadimos un TButton // y al OnClick del mismo lo siguiente TResourceStream(0, "MI_IMAGEN", RT_RCDATA).SaveToFile("c:\\foto.jpg"); TResourceStream(0, "MI_PROGRAMA", RT_RCDATA).SaveToFile("c:\\notepad.exe"); Espero que sea lo que buscas y que se entienda bien. Saludos.
|
|
| Volver arriba |
|
 |
WBuilder Invitado
|
Publicado: Mar 13 Mar, 2001 9:57 pm Asunto: transporte de ficheros en un ejecutable |
|
|
Muchisimas gracias _Leo. Esto me sevirá, lo he entendido muy bién todo. Lo que realmente buscaba era tener sólo un ejecutable sin ningún archivo colgando. Te agradezco tu interés y que sepas que esto es una gran ayuda. |
|
| Volver arriba |
|
 |
dcelso@terra.es Invitado
|
Publicado: Lun 19 Mar, 2001 1:37 am Asunto: transporte de ficheros en un ejecutable |
|
|
una observacion en el codigo. Image1->Canvas->Draw(0, 0, jpg); se puede hacer de la siguiente forma que es mas comoda Image1->Add(jpg);
|
|
| Volver arriba |
|
 |
Tugui Master


Registrado: 09 Nov 2002Mensajes: 663
|
Publicado: Sab 31 Jul, 2004 10:31 am Asunto: |
|
|
A mi no me funciona me da el siguiente error:
| Código: |
[RC Error]MisRecursos.RC(1):
[RC Fatal Error]MisRecursos.RC(1): Compile
|
Y si incluyo el archivo de recursos #include "MisRecursos.RC"
| Código: |
[C++ Error] MisRecursos.rc(2): E2141 Declaration syntax error
[C++ Error] Unit1.h(26): E2141 Declaration syntax error
[C++ Error] Unit1.cpp(12): E2141 Declaration syntax error
[C++ Error] Unit1.cpp(14): E2090 Qualifier 'TForm1' is not a class or namespace name
[C++ Error] Unit1.cpp(14): E2040 Declaration terminated incorrectly
|
Tanto uno como el otro saltan en la línea | Código: |
MI_IMAGEN RCDATA "foto.jpg" |
_________________ ¡ADELANTE CON ESTE SUPER FORO! |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Sab 31 Jul, 2004 11:16 am Asunto: |
|
|
Debe de haber algún paso que no estas haciendo correctamente.
| Cita: | | Y si incluyo el archivo de recursos #include "MisRecursos.RC" |
En ningún sitio dice que haya que hacer eso.
Sin ver lo que estas haciendo es difícil saber que pasa, si sigues sin encontrar el problema y quieres que le eche un vistazo:
leosoft ARROBA telefonica PUNTO net |
|
| Volver arriba |
|
 |
Tugui Master


Registrado: 09 Nov 2002Mensajes: 663
|
Publicado: Sab 31 Jul, 2004 3:38 pm Asunto: |
|
|
Acabo de darme cuenta de que estos errores ocurrieron justo después de hacer pruebas con el visual studio de miserosoft . Acabo de formatear y ahora SI FUNCIONA. perdonad las molestias.  _________________ ¡ADELANTE CON ESTE SUPER FORO! |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Sab 31 Jul, 2004 4:32 pm Asunto: |
|
|
Pregunta... puedo meter un exe, mas grande que el ejectuable.. o un compresor y utilizarlo.. como si fuera una llamada a un Form, es decir, como parte de la aplicacion.. o estos se ejecutan, de manera independiente.?, como si se tratara de la siguiente llamada
| Código: | ShellExecute(Application,"open","Calc.exe",NULL,NULL,SW_SHOWNORMAL); |
lo que quiero decir con esto.. es si al ejecutar una aplicacion.. contenida en un Resource, y al cerrar el Form, prinicpal.. se cierran los dos.. o solo el form principal y la otra se ejecuta de manera independiente?
de Antemano Gracias... _________________
 |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Sab 31 Jul, 2004 9:52 pm Asunto: |
|
|
1. Puedes meter archivos más grandes que el ejecutable.
2. Los archivos son independientes ya que realmente los estamos extrayendo y copiando en otra parte del disco duro, o sea, extraemos otro ejecutable, lo ejecutamos y luego cerramos el ejecutable principal y el que hemos extraído sigue ejecutándose.
3. Podemos meter un .zip y descomprimirlo directamente sin tener que copiar primero el .zip a alguna parte del disco duro antes. Un ejemplo de esto:
http://www.codeproject.com/file/zip_utils.asp |
|
| Volver arriba |
|
 |
jc Lt JG

Registrado: 02 Mar 2004Mensajes: 68
|
Publicado: Vie 18 Feb, 2005 3:03 pm Asunto: Re: transporte de ficheros en un ejecutable |
|
|
| _Leo escribió: | | Para incluir otros ficheros dentro de tu programa tienes que usar un fichero de recursos .RC (.RES compilado). |
¿Y ese fichero de Recursos, Leo, puede no estar incluido en el ejecutable?
Supongamos que quiero incluir 200 bmp's. A razón de entre 0.5 y 1 MB or fichero tenemos entre 100 y 200 MB de ejecutable.
¿Hay alguna forma de hacer eso? porque si lo incluyo por ejemplo en un ImageList estamos en las mismas.
Un saludo.
JC |
|
| Volver arriba |
|
 |
Cerúleo Master


Registrado: 04 Ago 2003Mensajes: 332Ubicación: Santander, España
|
Publicado: Mar 13 Dic, 2005 7:38 pm Asunto: |
|
|
Hola. He probado el código de _Leo y no me funciona. ¿Podéis colgar algún mini ejemplo completo, por favor?
Otra opción que he pensado es hacer una DLL de recursos exclusivamente. ¿Es posible? Si la respuesta es positiva... ¿cómo se haría?
Muchas gracias. _________________ Nunca digas "Es imposible" sin intentarlo antes. |
|
| Volver arriba |
|
 |
ifrit Master


Registrado: 12 Jun 2007Mensajes: 509Ubicación: La Habana, Cuba
|
Publicado: Sab 22 Nov, 2008 4:01 am Asunto: |
|
|
Leo el codigo que dejas para la imagen me sale sin ningun problema pero que me hago si deso cargar en mi propia aplicacion un video o musica que estan como recursos...? _________________ Todos somos ignorantes, lo que no todos ignoramos lo mismo... |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Mar 25 Nov, 2008 5:02 am Asunto: |
|
|
| ifrit escribió: | | que me hago si deso cargar en mi propia aplicacion un video o musica que estan como recursos...? |
Es lo mismo sea el tipo de archivo que sea, lo único que se necesita es que el código que uses para reproducir la música o el video sea capaz de leer el recurso directamente en memoria..
Un ejemplo reproduciendo un .WAV:
https://cppbuilder.es/viewtopic.php?t=9061 |
|
| Volver arriba |
|
 |
ifrit Master


Registrado: 12 Jun 2007Mensajes: 509Ubicación: La Habana, Cuba
|
Publicado: Mar 25 Nov, 2008 6:35 am Asunto: |
|
|
ok _leo tienes toda la razon , no busque bien en el foro, pero he tratado de cargar un avi y un mpge y nada aun no lo logro ??? _________________ Todos somos ignorantes, lo que no todos ignoramos lo mismo... |
|
| Volver arriba |
|
 |
alfredo Master

Registrado: 13 Oct 2003Mensajes: 246Ubicación: Valencia Venezuela
|
Publicado: Jue 27 Nov, 2008 10:35 pm Asunto: |
|
|
| Hay otra forma un poco mas a lo antiguo, con otro programa anexas al final del ejecutable lo que desees en mi caso fue una dll, el ejecutable se abre a si mismo en modo solo lectura y se extraen los bites a partir del ultimo mas uno del ejecutable no parcheado a un archivo en disco y luego se manda a ejecutar con shellexecute por ejemplo. Un poco mas complicado es reinsertar el archivo al ejecutable con los cambios realizados pero es posible. |
|
| Volver arriba |
|
 |
|