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 05-07-2006
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 19
Deiv Va por buen camino
Thumbs down Es bueno engordar con RES mi ejecutable?

Mi duda es la siguiente, ¿Cuan bueno o No beneficioso es engordar una aplicación (ejecutable) de Delphi?, Todos sabemos, que por evitar ser pirateados algunos íconos, Imágenes, o Sonidos lo trabajamos con arcvhivos RES verdad?.

¿Cuan beneficioso sería introducir en un RES 200 íconos 32x32?
¿Cuan beneficioso sería introducir en un RES 200 imágenes BMP 64x64?
Y como adimento digamos unas 5 imágenes BMP grandes (800x600) para fondos y otros.

TOTAL = 405,

¿Tal vez no me quedaría otra que tenerlos en un directorio? pero con la probabilidad que más adelante lo usen éstas imágenes que me costó trabajar o con aquellos íconos construirlos?

Si hablé de una cantidad de 200, es por la sencilla razón de crear una Tabla Periódica Química y para otros trabajos jalándolos y mostrar después de un posterior cálculo en mi aplicación.
¿Afecta en algo engordar el ejecutable, se vuelve lento, no pasa nada? ¿Cual sería el mejor planteamiento?

Gracias espero vuestro sugerencias

Última edición por Deiv fecha: 06-07-2006 a las 01:21:19. Razón: Cambio de Ícono
Responder Con Cita
  #2  
Antiguo 05-07-2006
jam jam is offline
Miembro
 
Registrado: may 2003
Posts: 74
Poder: 21
jam Va por buen camino
También puedes guardarlos en varias dll agrupadas por temas de forma que solo se utilice alguna de ella en función de la parte del programa que se este manejando.
Responder Con Cita
  #3  
Antiguo 05-07-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.275
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
Cita:
Empezado por Deiv
Mi duda es la siguiente, ¿Cuan bueno o No beneficioso es engordar una aplicación (ejecutable) de Delphi?, Todos sabemos, que por evitar ser pirateados algunos íconos, Imágenes, o Sonidos lo trabajamos con arcvhivos RES verdad?
Bueno, hoy en día no creo que sea esa la razón; Hay muchos que permiten extraer sin problemas esos recursos del ejecutable.
Creo que es más por ecitar errores y por facilidad.
Con un sólo ejecutable lo tienes todo; de la otra forma deberías copiar el ejecutable y los directorios; Si alguien se olvida del directorio ==> Error; Si alguien borrar sin querer algo del directorio ==> Error,...

Cita:
Empezado por Deiv
¿Cuan beneficioso sería introducir en un RES 200 íconos 32x32?
¿Cuan beneficioso sería introducir en un RES 200 imágenes BMP 64x64?
Y como adimento digamos unas 5 imágenes BMP grandes (800x600) para fondos y otros.
Si lo piensas bien, al ponerlos en un directorio el EXE ocupa menos, pero el espoacio que ganas lo usas en el directorio, y no lo evitas, porque si tienes que copiar el programa, también tienes que copiar el directorio.
Sólo lo veo adecuado en caso de que realmente el ejecutable creciera mucho en tamaño. En ese caso un sólo archivo puede ser incómodo.
__________________
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 06-07-2006
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 19
Deiv Va por buen camino
Question

¿Como???? esta parte si que no me la sabía........ ¿Como guardo en dll? ¿los íconos? ¿las imágenes?

Eso, ¿Como guardo en dll?

Por ahí leí (no recuerdo donde) que existen programas que leen íconos de dlls ¿es cierto eso? Entonces no tendría sentido, porque igual estarían desprotegidos.

Casi llegue a entender lo de Neftali (casi), según su post, entonces necesariamente debo dejarlo en un directorio imagenes e íconos??. Mi aplicación trabajará desde CD o en su defecto crearé un Instalador con (InoSetup, InstallShield, etc, para evitar el descuido de directorios)
¿dlls sería el mejor planteamiento? como?
¿Como encararían Uds. esta situación? ¿Que otras sugerencias?
Responder Con Cita
  #5  
Antiguo 06-07-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.275
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
Cita:
Empezado por Deiv
Casi llegue a entender lo de Neftali (casi), según su post, entonces necesariamente debo dejarlo en un directorio imagenes e íconos??
No creo haber dicho tal cosa.
Depende del caso concreto.

Para iconos e imágenes normales yo siempre opto por ponerlos en recursos.
El tema del directorio es para casos especiales, pero no creo que se pueda generalizar.
* Por ejemplo si tu aplicación tiene 20 imágenes BMP para fondo de escritorio, no tendría sentido ponerlas como recursos; Mucho espacio. En ese caso la opción del directorio oparace más adecuada (pero debes preveer que alguien lo borre para que no pete la aplicación)
* Si tu aplicación usa 1 BMP de fondo, en ese caso tal vez sí valga la pena como recurso; Poco espacio.
__________________
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
  #6  
Antiguo 06-07-2006
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 19
Deiv Va por buen camino
Perdon.... por eso mencioné "casi llegue a entender". Gracias por la aclaración

¿Pero como creo íconos dlls? y como los recupero desde Delphi? ¿se hace esto también con imágenes?
Eso es nuevo para mi.

Última edición por Deiv fecha: 06-07-2006 a las 15:11:05.
Responder Con Cita
  #7  
Antiguo 06-07-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.275
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
Basta con que crees un fichero de recursos como los estandard de Delphi y lo añadas a un proyecto de DLL.

Crea un archivo .RC como este (icons.rc):
Código:
BACK          BITMAP ".\back.bmp"
BARCODE    BITMAP ".\barcode.bmp"
...
Lo compilas usando el programa brcc32 (desde la linea de comandos)
Código:
brcc32 icons.Rc > Errores.txt
Desde Delphi creas un nuevo proyacto en: File/New/Other/DLL Wizard

y donde pone {$R *.res} cambias eso por {$R ICONS.RES}
Compila, linka y la DLL resultante ya tiene los iconos.

Una vez que tengas la DLL creada, en mi caso, por ejemplo con el nombre: ResDLL.dll para recuperar los iconos haz lo siguiente:
(1) Crea una nueva aplicación de delphi.
(2) Coloca dos TImage y un botón.
(3) En el Onclick del botón coloca el siguiente código:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  DllHandle: THandle;
begin
  // Cargar la DLL (debe estar en el mismo directorio)
  DllHandle := LoadLibrary('.\ResDLL.dll');
  // Cargada correctamente?
  if DllHandle <> 0 then begin
    // proteccion
    try
      //Cargar los recursos desde la DLL
      Image1.Picture.Bitmap.Handle := LoadBitmap(DllHandle, 'BACK');
      Image2.Picture.Bitmap.Handle := LoadBitmap(DllHandle, 'BARCODE');
    finally
      // Liberarla
      FreeLibrary(DllHandle)
    end;
  end
  else begin
    // Error
    ShowMessage(SysErrorMessage(GetLastError))
  end;
end;

Una vez compilado si la DLL y el EXE están en el ismo directorio deberían funcionar.
__________________
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.

Última edición por Neftali [Germán.Estévez] fecha: 06-07-2006 a las 16:28:54.
Responder Con Cita
  #8  
Antiguo 07-07-2006
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 19
Deiv Va por buen camino
Thumbs up

Neftali, muy didáctica tu explicación, seguí las instrucciones, he probado tu código y de maravilla!, Gracias. En un principio pensé que como existen muchos programas que trabajan con Iconos y recuperan formatos DLL (ArtIcons Pro, IconCool, etc) pensé que quedarían desprotegidos, intenté con un par de ellos abrir la DLL creada con Delphi (según tu ejemplo) y he observado que no los pueden abrir, ¿es así?. Estoy empezando a leer más sobre el Tema DLL, me parece que los Programas de Íconos recuperan otro tipo de dlls a los que se crea con Delphi....

Yo trabajo con Recursos para otros formatos de esta manera:

NuevoMP3 RCDATA MiMusica.mp3
NuevoWav WAVE MiWav.wav
NuevoAvi AVI MiAvi.avi
NuevoIco ICON Foto.ico
NuevoAni ANICURSOR Globos.ani
NuevoFont RCDATA FORTE.ttf

En las líneas:
Código Delphi [-]
DllHandle := LoadLibrary('.\ResDLL.dll');
  if DllHandle <> 0 then begin
    try
      //Cargar los recursos desde la DLL
      Image1.Picture.Bitmap.Handle := LoadBitmap(DllHandle, 'BACK');

¿Se realiza el mismo proceso para recuperar una DLL que tenga cargado un archivo ICO, ANI, WAV, MP3 y AVI?
Obviamente la última línea:
Código Delphi [-]
Image1.Picture.Bitmap.Handle := LoadBitmap(DllHandle, 'BACK');

tendrá que ser diferente para cada uno.

Imagino que la llamada a la DLL debe ser la misma para cualquier caso, pero....

¿Cual es la forma de cargar los Recursos desde la DLL para dichos casos? (ico, ani, wav, mp3, avi)
Responder Con Cita
  #9  
Antiguo 07-07-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.275
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
Cita:
Empezado por Deiv
...me parece que los Programas de Íconos recuperan otro tipo de dlls a los que se crea con Delphi...
Pues yo he probado con esa DLL dos de los que uso habituialmente (ResThief y ResHacker) y me recuperan los imágenes del interior perfectamente.

Cita:
Empezado por Deiv
¿Se realiza el mismo proceso para recuperar una DLL que tenga cargado un archivo ICO, ANI, WAV, MP3 y AVI?
Obviamente no, cada tipo se debe recuperar de una forma distinta.

Seguro que buscando un poco por internet encuentras infomación para recuperar:
* Cursores, Iconos y GIF, WAV y MP3, ...
__________________
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.

Última edición por Neftali [Germán.Estévez] fecha: 07-07-2006 a las 18:05:19.
Responder Con Cita
  #10  
Antiguo 10-07-2006
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 19
Deiv Va por buen camino
Thumbs up

Tienes razón los Programas ResThief y ResHacker (que no los conocía) abren y leen normal las DLLs que contienen BitMaps. Entonces el camino que me quedaría para camuflarlos sería cambiar los nombres a mis DLLs? cosa que no sean muy llamativas, tal vez.

Me sugerieron también guardar en formato DAT, no se si es solo cambiar la extensión y ya.

Gracias por orientarme como sugerencia algunas páginas, me sirvió de mucho y voy a seguir investigando.

Ahora me compliqué más, encontré en algunas: DLL vs BPL.
Responder Con Cita
  #11  
Antiguo 10-07-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Si se trata de proteger las imagenes porque no las encriptas, una encriptacion sencilla, lo suficiente para desanimar a un posible fisgon.
Responder Con Cita
  #12  
Antiguo 10-07-2006
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 19
Deiv Va por buen camino
Question

Encriptar 200 imágenes? (tabla periódica) ¿Cada una?

Perdón por lo novato pero es así?
Responder Con Cita
  #13  
Antiguo 10-07-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
No es tan difícil encriptar una imagen, puedes hacer un programita que encripte las 200 en un par de segundos. Aprovechando un poco de código que tenia por ahí te dejo una función para encriptar Bmps, no es una maravilla criptográfica pero lo suficiente para desanimar a los curiosos.

Código Delphi [-]
type
  Triple = array[1..3]of Byte;

procedure Cifrar(Imagen: TPicture; Clave: Longint);
var
  Bitmap: TBitmap;
  P: ^Triple;
  i, j: Integer;
begin
  RandSeed:= Clave;
  if not (Imagen.Graphic is TBitmap) then
  begin
    Bitmap:= TBitmap.Create;
    try
      Bitmap.Width:= Imagen.Width;
      Bitmap.Height:= Imagen.Height;
      Bitmap.Canvas.Draw(0,0,Imagen.Graphic);
      Imagen.Assign(Bitmap);
    finally
      Bitmap.Free;
    end;
  end;
  Imagen.Bitmap.PixelFormat:= pf24bit;
  for j:= 0 to Imagen.Bitmap.Height - 1 do
  begin
    P:= Imagen.Bitmap.ScanLine[j];
    for i:= 0 to Imagen.Bitmap.Width - 1 do
    begin
      P^[1]:= P^[1] xor Byte(Random(256));
      P^[2]:= P^[2] xor Byte(Random(256));;
      P^[3]:= P^[3] xor Byte(Random(256));
      inc(P);
    end;
  end;
end;

También te dejo el código en un zip listo para usar para que le eches un vistazo
Archivos Adjuntos
Tipo de Archivo: zip CriptoBmp.zip (3,9 KB, 28 visitas)
Responder Con Cita
  #14  
Antiguo 10-07-2006
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 19
Deiv Va por buen camino
Gracias Seoane por la orientación, gracias a todos.
Intentaré más tarde probar la función y veremos como marcha.
Thanks!
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
Futuro .NET, ¿bueno o malo? REHome Varios 0 15-11-2005 10:42:21
...bueno pero no te enojes... Jure Humor 0 12-11-2004 16:11:00
... lo bueno, lo malo y lo feo ... Jure Humor 2 26-03-2004 16:15:47
es bueno paradox para una red? maruenda Conexión con bases de datos 5 23-02-2004 17:15:50


La franja horaria es GMT +2. Ahora son las 15:25:20.


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