Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-06-2006
RaulChemical RaulChemical is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 59
Poder: 21
RaulChemical Va por buen camino
Incluir un fichero en el ejecutable

Hola de nuevo. Este es mi segundo hilo del dia:

Tengo que incluir dentro de mi ejecutable (en este caso, una .dll) un archivo, concretamente un excel que tengo que extraer para hacer una serie de historias con el.

He estado trasteando en el trucomania y he encontrado un truco en el que incluyen dentro del ejecutable un jpg para mostrarlo en la tipica ventanita de splash.

Código Delphi [-]
var 
   Corriente   : TResourceStream;
   Imagen      : TJPegImage;
begin 
  Imagen:=TJPegImage.Create;
  Corriente:=TResourceStream.Create( hInstance,
                                     '#1',
                                     RT_RCDATA );
  Corriente.Seek(0,soFromBeginning);
  Imagen.LoadFromStream(Corriente);
  Image1.Canvas.Draw(0,0,Imagen);
  Imagen.Free;
  Corriente.Free;
end;


Mi pregunta es saber si igual que carga el TImage a partir del ResourceStream, se puede cargar un TFileStream con el fichero que incluyo dentro del .res y hacer un SaveToFile para guardar en disco el fichero y operar con el.


Hemos estado barajando la posibilidad de tener un directorio con los exceles a tratar, pero lo hemos descartado ya que el cliente es un poco "tocón" y ya se ha cargado archivos de los que usamos, incluso los Ini's.


Muchas gracias por todo.

Raul.
__________________
ash nazg durbatulûk
ash nazg gimbatul
ash nazg thrakatulûk
agh burzum-ishi krimpatul
Responder Con Cita
  #2  
Antiguo 07-06-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Sí que puedes hacer lo que dices, me parece a mí. Descarga el ejemplo "Incluir un archivo de texto en una DLL y después extraerlo" que puedes encontrar en mi página Web personal e intransferible. Justamente, encontrarás el ejemplo que te digo en el apartado Código Delphi.

Pensaba reproducirlo aquí mismo, su código y eso, pero, el ejemplo contiene además algo de documentación, en fin, texto que acaso pueda servir de alguna ayuda. En todo caso, si tienes algún problema o necesitas de alguna aclaración... adelante.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 07-06-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.278
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Por pasos:

(1) Crea un hoja de Excel; Supongamos test.xls
(2) Crea un archivo .rc; Datos.rc
(3) Escribe dentro:
EXCEL RCDATA .\test.xls
(4) Compilalo desde la línea de comandos con:
brcc32 datos.Rc
(5) Debe generar un fichero .RES llamado Datos.res con un tamaño casi igual al fichero test.xls
(6) En el fichero DPK de tu proyecto, donde está el código:
Código Delphi [-]
  {$R *.res}
Añade:
Código Delphi [-]
  {$R Datos.res}

(7) Pon un botón y en el evento OnClik escribe:
Código Delphi [-]
var
  // Steam para recuperar el recurso
  RS : TResourceStream;
begin
  // Crear a partir del recurso
  RS := TResourceStream.Create( 0, 'EXCEL', RT_RCDATA);
  try
    // Grabar en un fichero
    RS.SaveToFile('c:\temp\Salida.xls');
  finally
    // Liberar
    RS.Free;
  end;

(8) Al ejecutarlo y pulsar el botón se te habrá creado el fichero de excel en el directorio especificado.

Creo que no me dejo nada; Pruébalo y ya dirás...
__________________
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.
Responder Con Cita
  #4  
Antiguo 07-06-2006
RaulChemical RaulChemical is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 59
Poder: 21
RaulChemical Va por buen camino
Muchisimas gracias.
Ahora mismo me pongo con ello.


Ya os contaré.

Raulete.
__________________
ash nazg durbatulûk
ash nazg gimbatul
ash nazg thrakatulûk
agh burzum-ishi krimpatul
Responder Con Cita
  #5  
Antiguo 07-06-2006
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 22
JXJ Va por buen camino
hola RaulChemical

¿que funcionalidad se obtiene, con meter el archivo
excel. dentro del ejecutable?

no entiendo. el escenario. en el que es mejor incluir el archivo
dentro del exe. que el proporcinarlos el exe y el xls, por separado
o en un comprimido rar o zip. etc.
Responder Con Cita
  #6  
Antiguo 07-06-2006
Sick boy Sick boy is offline
Miembro
 
Registrado: may 2003
Ubicación: Cantabria
Posts: 245
Poder: 21
Sick boy Va por buen camino
Cita:
¿que funcionalidad se obtiene, con meter el archivo
excel. dentro del ejecutable?
A mi se me ocurre una, que sabes que cada vez que lo extraes encuentras el excel tal y como lo pusiste en la DLL.

Vamos, que es imposible que el cliente abra la DLL y se ponga a enredar, mientras que en un zip o por separado puede modificarlo.

Supongo que cada vez que lo quiera usar lo extrae, machacando el excel que tenia anteriormente.

Y si quieres, cuando termines de trabajar lo borras para que no quede rastro.

Me parece una muy buena idea, salvo porque odio excel
Responder Con Cita
  #7  
Antiguo 08-06-2006
RaulChemical RaulChemical is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 59
Poder: 21
RaulChemical Va por buen camino
Pues si, como bien dice Sick boy (veo que eres fan de trainspotting), la intencion de meter el excel en la dll es para que el cliente no pueda modificarlo o eliminarlo (cosa que ya nos ha hecho varias veces con el excel anterior). Lo extraemos en el temp de windows , lo rellenamos y se lo mostramos. Si quiere hacer un guardar como, que lo haga y si no, se queda en el temp y nos lo cargaremos con la siguiente ejecucion del proceso.

Lo del excel es por exigencias del guion, inicialmete era un qreport, luego nos lo pidieron exportar a excel (con un formato que ellos nos "impusieron") y luego dijeron que pasaban del qreport.
En fin, a ver que tal queda. Suerte que tenemos el upx para que no engorde tanto la dll con el excel.
__________________
ash nazg durbatulûk
ash nazg gimbatul
ash nazg thrakatulûk
agh burzum-ishi krimpatul
Responder Con Cita
  #8  
Antiguo 08-06-2006
Sick boy Sick boy is offline
Miembro
 
Registrado: may 2003
Ubicación: Cantabria
Posts: 245
Poder: 21
Sick boy Va por buen camino
Sip, me encanta Trainspotting (no por el tema del caballo, que no me interesa).

Y tu?? Eres fan de los chemical brothers o del Quimicefa ???

Seguro que queda bien, y el UPX es muy bueno.

Para cuando nos pediran los clientes exportar a OpenDocument ??
Se aceptan apuestas
Responder Con Cita
  #9  
Antiguo 08-06-2006
RaulChemical RaulChemical is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 59
Poder: 21
RaulChemical Va por buen camino
Es por los chemical brothers.

Mi apuesta por lo del OpenDocument es nunca mientras el cliente sea parthner (o como se escriba) de Micros....

Mientras no se acaben los afanes imperialistas de algunos y la ambicion de otros seguiremos estando agarrados a "estandares" como el excel o el guord.

Con la de birguerias que se pueden hacer con el xml o incluso el rtf.

En fin....
__________________
ash nazg durbatulûk
ash nazg gimbatul
ash nazg thrakatulûk
agh burzum-ishi krimpatul
Responder Con Cita
  #10  
Antiguo 08-06-2006
Avatar de acertij022
acertij022 acertij022 is offline
Miembro
 
Registrado: may 2003
Ubicación: Argentina-Bs. As.
Posts: 233
Poder: 22
acertij022 Va por buen camino
Si la idea es incoporar algun archivo en el interior del ejecutable se puede cargar todo en una variable tipo string.

hacer un pequeño programa que habra el archivo tipo char y guardarlo en un txt
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
ff:file of char;
FText:textFile;
char1:char;
str1:string;

begin
assignfile(ff,'a.exe');
Reset(ff);
while not eof do
 begin
 Read(ff,char1);
 str1:=str1+'#'+IntToStr(ord(char1));
 end;
closeFile(ff);

assignfile(FText,'a.exe');
ReWrite(FText);
WriteLn(FText,str1);
CloseFile(Ftext)
end;

El resultado del archivo de texto generado guardarlo en string en nuestra aplicacion y por medio de este codigo lo sacamos

Código Delphi [-]
procedure StrToFile(Texte: String; Fitxer: String);
var
  Stream: TStream;
begin
  Stream := TFileStream.Create(Fitxer, fmCreate);
  try
    Stream.WriteBuffer(Pointer(Texte)^, Length(Texte));
  finally
    Stream.Free;
  end;
end;
Creo que este sistema se le dice archivo mochila.
Espero que esto te sirva
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
¿cómo crear un fichero ejecutable en otro ordenador? elcaracas C++ Builder 2 01-11-2006 04:32:19
incluir totales o no reevil MySQL 12 06-05-2006 07:42:05
incluir sonido en ejecutable edusus Varios 1 12-04-2006 00:15:57
Incluir DLL en Ejecutable senpiterno Varios 1 24-01-2005 13:39:03
error al incluir bde en el uses arc22 Conexión con bases de datos 1 28-06-2004 09:53:06


La franja horaria es GMT +2. Ahora son las 03:43:55.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi