Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Tamaño de mi ejecutable (https://www.clubdelphi.com/foros/showthread.php?t=8203)

Ricardo Alfredo 12-03-2004 03:33:27

Tamaño de mi ejecutable
 
:confused: se que esta pregunta se ha realizado con anterioridad, pero no me queda clara las respuestas dadas.

Mi aplicacion va en los 5 mb los cuales tengo imperiosamente que reducir.

en alguna parte han dicho que se saque los packqges, pero si yo desmarco estos de la seccion design, me los elimina del delphi completamente y tengo que instalarlos para otra aplicacion que si los requiere.

lo otro que han dicho es poner los packqges en el runtime, con esto se me hace mas dificil manejarlos ya que no conosco los nombres de los pack y para que se usan.

¿estas son las unicas formas de reducir el tamaño de la aplicacion ?

es correcto lo que entendi o me he equivocado en algo.

en definitiva ¿ como puede reducir el tamaño de la aplicacion?.

efectue una prueba y abri el delphi y genere el ejecutable sin nada solo con lo que se crea cuando crean un proyecto nuevo y el ejecutable que me genero pesa 2,2mb ¿no creen que es demasiado grande si no he puesto ni una coma?.


cualquier luz a mi problema se los agradesco desde ya.

jachguate 12-03-2004 06:03:38

En que versión de delphi estas trabajando????

Yo he hecho file/new/project, dejando el formulario generado por delphi, compile el proyecto y los tamaños de los ejecutables son:

delphi 4: 277 Kb
delphì 7: 360 Kb

En ninguno de los dos casos he compilado con runtime packages.

Cita:

Empezado por Ricardo Alfredo
se me hace mas dificil manejarlos ya que no conosco los nombres de los pack y para que se usan

Lo único necesario es identificar que packages necesitará tu aplicación para correr. Creo que es vital que vos, que has diseñado la aplicación, conozcas que componentes se han usado en ella, y a partir de alli poder identificarlos. Si no, podes usar, como método de aprendizaje, el de prueba y error (aunque todo está muy bien documentado... pero si no tenes tiempo para investigar o reina el desorden, siempre vale).

Cita:

Empezado por Ricardo Alfredo
en alguna parte han dicho que se saque los packqges, pero si yo desmarco estos de la seccion design, me los elimina del delphi completamente y tengo que instalarlos para otra aplicacion que si los requiere

El tamaño de tu aplicación no tiene ninguna relación con la cantidad de packages o componentes disponibles para el ide de delphi. Tiene que ver únicamente con los utilizados por ella misma. Incluso, un package puede tener 20 componentes, pero si no hay referencias a 15 de ellos a lo largo y ancho de la aplicación, Delphi los excluirá del aplicativo en el proceso de compilación-enlace.

Cita:

Empezado por Ricardo Alfredo
estas son las unicas formas de reducir el tamaño de la aplicacion

Depende. No solo código va en la aplicación... y 5 MB de código parece bastante... alli también van "recursos", hablando en la jerga de windows. Eso significa que si pones un TImage en un formulario, con un Bitmap de 2 MB, pues tu aplicación tendrá que cargar ese peso dentro del ejecutable... es lógico, no?? Algo similar ocurre si pones un RichEdit, y le cargas la constitución de tu pais...

Además, quizas has cambiado la configuración del linker (Project/Options/Linker). Ponele atención especialmente a las opciones en el recuadro EXE and DLL options que tienen relación directa con el tamaño del ejecutable.

en fin... hay mucha tela que cortar, y mientras no aportes mas datos...

Hasta luego.

;)

__cadetill 12-03-2004 12:26:00

Sólo añadir a la buena explicación del amigo Juan Antonio que, para comprimir exe generados en Delphi, también puedes valerte de utilidades estilo al UPX o AsPack

Gydba 12-03-2004 12:42:59

Me sumo a lo que dice catedill, lo mejor que he probado es upx. Tiene buena performance y además es extremadamente sencillo de manejar.

Info:
http://upx.sourceforge.net/

Sr_Sombrero 13-03-2004 05:17:08

Jazz-Upx es una GUI para UPX muy amigable :p

thecid 07-04-2004 02:26:27

Los compresores/protectores, como el upx, son muy buenos, en especial que te pueden ayudar a reducir tu ejecutable consideradamente, en el internet hya varios compactadores/protectores, esta el armadillo, el shinkler, upx, y varios mas, que la lista es interminable, ademas apoyo a los compañeros que dicen usar compresores, puesto esto tambien te proteje de la ingenieria inversa :D

PabloTech 24-01-2007 01:00:58

Inclusión y eliminación
 
Hola... Muchas cosas de las dichas anteriormente no las he probado pero no dudo de que sean ciertas. Sin embargo, cuando a tu proyecto le agregas componentes (por ejemplo un componente de la clase TRichEdit), en la cláusula "USES" se agregan tambien una lista de unidades que aumentan el tamaño de tu aplicación (por ejemplo las unidades "StdCtrls, ComCtrls"). Contrariamente, si luego quitas esos componentes del proyecto esas unidades que se añadieron no se eliminan de la cláusula "USES" y el tamaño de tu aplicación sigue siendo grande.

Prueba y dime...

Chau...

Pandre 05-02-2007 06:34:22

100% de acuerdo con los compañeros en cuando a lo de UPX y demás...

Y añadir, que si en la aplicación usas muchas imágenes, por ejemplo, es preferible que los TImageList, TImage, etc. carguen dichas imagenes de archivos y no que estén cargados en dichos componentes, pues eso si que engorda a los .exe.

Otra solución pasa por dividir en módulos la aplicación con DLLs o con Packages al estilo Delphi ;)

Saludos

ixMike 05-02-2007 20:52:45

Bueno, aquí van mis consejos (mi método de reducir el tamaño del ejecutable):

1. Eliminar del programa cualquier componente que no utilices (chapucillas, elementos decorativos de más, etc). Cuando lo hayas hecho (si tienes que hacerlo) compila.
2. Cierra el programa y ahora vas unidad por unidad dejando la USES solo en "uses Windows, Forms;" o solo "uses Windows;" si esa unidad no tiene Forms. Vuelve a compilar.
3. Como te saldrán muchos errores, empieza a completar la uses con las unidades que te falten. Si no sabes a qué unidad pertenece una función o una constante, puedes mirarlo en la ayuda de Delphi (la seleccionas y pulsas F1).

Estos tres pasos sirven para eliminar las unidades que no necesitas. Otros sistemas para eliminarlas es declarar tus propias constantes o funciones API en tu unidad.

4. Cualquier imagen que aparezca en el programa contenida en un TImage o similar es conveniente que la cargues en ejecución (teniéndola en un archivo a parte) y a poder ser en formato JPEG.
5. Revisa bien tu código. A veces hay cosas que sobran (sobre todo cuando pasas las 1000 líneas de código y has ido haciendo pequeñas modificaciones).
6. Lo de marcar Run Time Packages viene bien si el programa es para ti, pero si es para alguien que no tiene Delphi no conviene marcarlo.

Por último, tras hacer una última compilación, aplicar algún programa de compresión. Yo utilizo UPX, que de los que he probado es el que mejor comprime, y, la verdad, obtengo increíbles resultados.

Bueno, estos pasos son consejos, es posible que alguno no te convenga o que no esté completo.

Por favor, que alguien complete la lista (seguro que se me escapa algo).

Espero que esto sirva de ayuda a todos.

Cordiales saludos. ;)

mia 06-02-2007 16:09:05

AsPack... sin lugar a dudas... de 8MB a 1,5MB. Sin palabras....

saludos...

Lepe 06-02-2007 16:49:31

Cita:

Empezado por ixMike
Estos tres pasos sirven para eliminar las unidades que no necesitas.

También existe cnpack (open source y freeware) que ya lo hace.
Cita:

Empezado por ixMike
4. Cualquier imagen que aparezca en el programa contenida en un TImage o similar es conveniente que la cargues en ejecución (teniéndola en un archivo a parte) y a poder ser en formato JPEG.

Casi mejor dejarla en el ejecutable:
- Al trasladar tu programa, también necesitaras llevar las imágenes... así que el tamaño es el mismo.
- Los usuario son muy hábiles con los jpg y otros formatos cambiando el contenido del mismo... normalmente por fotos indecentes ;).

El uso de un TImageList en un módulo de datos es muy recomendable, ya que la misma imagen puede compartirse en 10 ventanas, pero solo engorda el ejecutable una sola vez. Dicho de otra forma.... "nada de usar la propiedad Glyph de los botones.

Saludos

edelphi 06-02-2007 23:02:33

y como puedo crear un modulo de imagenes para que solo se carguen una sola vez en mi aplicacion??

Lepe 07-02-2007 10:47:18

File -> New -> TDatamodule

No recuerdo exactamente en que ficha está, buscalo un poco. Después añades el TImageList y añades las imágenes.

Cuando usas un SpeedButton, deberás añadir el "Uses datamodule1" para poder seleccionar el TimageList y su ImageIndex.

Otra cosa que suelo hacer es añadir los iconos en el imagelist y en tiempo de ejecución, (en el Oncreate de la forma) lo asigno a su propiedad Icon, ya que normalmente si reutilizo esa imagen.

Saludos

ixMike 07-02-2007 20:47:14

Cita:

Empezado por Lepe
- Los usuario son muy hábiles con los jpg y otros formatos cambiando el contenido del mismo... normalmente por fotos indecentes ;).

Te remito al truco 550 de Trucomanía

y en cuanto a lo de dejarlas dentro, depende: si tu programa es un solo ejecutable, pues mejor que sí, que las dejes dentro, pero si lo acompañan muchos archivos (de configuración, DLLs, etc) pues las imágenes pueden ir fuera del ejecutable.

Saludos


La franja horaria es GMT +2. Ahora son las 08:57:13.

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