PDA

Ver la Versión Completa : Comprimir ejecutables - UPX - Similar.


bataola
08-11-2005, 21:32:33
Hola gente, buenas tardes.
Tengo un problema, resulta que en el laburo hay un programa en Delphi 5 que bajo Win 98 tenía problemas de memoria. Entonces sugerí UPX para solucionar el problema y durante tres meses resulto, pero ahora ya no funciona.
Quería saber si conocen algún otro comprimidor del estilo UPX, reconozco que no es la mejor solución, se intentando eliminar formularios en desuso para reducir el ejecutable pero necesito una solución ahora ya que el cliente no puede utilizar el programa.
Desde ya muchas gracias.
Saludos!!!

Casimiro Notevi
08-11-2005, 21:45:23
Te sugiero que si es por problema del ejecutable, que extraigas las .bpl y así quedará el .exe de un tamaño mucho menor.

Deberás copiar las .bpl en el mismo directorio del .exe

Aparte de esto, puedes usar shrinker o neolite (creo recordar que son esos los nombres), pero no es la solución.

JXJ
08-11-2005, 21:54:36
Lo que suguiero es optimizar más el programa ..

Por que un compresor. comprime el tamaño
del ejecutable. Pero cada vez que se ejecuta.
ocupa espacio de la memoria.
y si lo ejecutar 5 a 10 veces, sin reiniciar.
tienen el programa 5 o 10 veces, en memoria.,
Claro. el windows. trata de vaciar la memoria que no esta en
uso. pero lo puede llegar ha hacer mal.
y se despercia la memoria.

Pero si no comprimes el ejecutable. aunque lo ejecutes.
más de una vez. sigues usando la misma copia de
el ejecutable. que esta en memoria.

revisa lo que dice este sitio
casi hasta abajo.

Why not use an EXE compressor?

http://www.jrsoftware.org/striprlc.php

Para el windows. deshabilita los programas que
se ejecutan al iniciarse windows.
que no sean indispensables. para windows. ni para
la seguridad. si hay antivirus dejalo activo.
asi no se cargan
y el windows se carga más rapido. y tiene más memoria
por que no carga programas al inicio.

haz
inicio -> ejecutar -> msconfig.

la ultima opcion. que es mejor,
que al equipo donde da problemas el programa,
le pongan más memoria.
hasta ayuda a mejorar la productividad.
no esperas tanto o ni esperas a que los programas
respondan.

Neftali [Germán.Estévez]
09-11-2005, 10:47:43
Quería saber si conocen algún otro comprimidor del estilo UPX
Hay muchos otros, pero UPX es de los que más comprime; Revisa éstos hilos:
http://www.clubdelphi.com/foros/showpost.php?p=83822&postcount=2
http://www.clubdelphi.com/foros/showpost.php?p=65216&postcount=3

De todas formas, coincido con lo dicho, creo que la mejor opción es que compiles con runtime packages (y eso no te debería costar mucho tiempo).

Lepe
09-11-2005, 11:01:40
Pero, ¿seguro que el problema es el compresor?

Yo más bien me inclino a que sea el propio programa el que tiene los errores. Que el problema se solucionara por 3 meses no indica nada. Desde mi punto de vista, pasaron 3 meses sin cumplirse las condiciones que fuerzan el error.

Deberías decir que error concreto muestra, y mirar el código fuente asociado.

bataola
10-11-2005, 15:03:06
Ante todo muchas gracias por ayudarme, perdón que no respondí antes, es que ayer ni siquiera prendí la máquina... voy a intentar algunas de las cosas que me sugirieron.

Problema del programa no es, ya que el error que tira es algo asi como "Insuficiente memoria para ejecutar la aplicación".

Saludos para todos.

Casimiro Notevi
10-11-2005, 15:09:06
... Problema del programa no es, ya que el error que tira es algo asi como "Insuficiente memoria para ejecutar la aplicación"... Precisamente por eso, puede ser problema del programa ;)

bataola
10-11-2005, 16:04:17
... pero no se porque opinan eso, porque en realidad el error aparece al iniciarse el programa. Error del programa pero de que tipo?

Lepe
10-11-2005, 17:17:20
Del tipo más dificil compañero: Efectos colaterales.

Por ejemplo: Abres una tabla, y en el evento afterScroll de ese tabla, tienes código que crea una ventana, objeto o algo parecido. Si además tienes una consulta basada en esa tabla, y al inicio recorres esa consulta y mueves la tabla con Next o lócate, estarás creando un objeto por cada registro que tengas, ocupando más y más memoria.

Este caso es simple, puede que el tuyo sea mucho más complejo y que intervengan muchos parámetros (todos los eventos de las tablas, consultas y DBgrid que tengas asociados a esas tablas).

Sugiero que acotes el problema. Escribas en un fichero .txt cada vez que entres en una rutina por ejemplo: "Entrando en tabla clientes BeforeOpen", etc. De esa forma si ves que una llamada se repite 10.000 veces, por ahí tienes el problema.

Por allí donde uses código para crear objetos, es muy posible de que esté el fallo.

Ejecutar el programa paso a paso es casi imposible para este tipo de cosas.

saludos

JXJ
10-11-2005, 19:06:21
a de ser por el programa.

yo he estado experimentando eso de memoria
insuficiente.

no se me bloquea el equipo. solo se traba un rato

Pero aparece. cuando creo una forma. con un mal metodo.
al iniciarse mi programa.

quite las lineas de codigo que crean esa forma.
y no hay aviso de falta de memoria.

bataola
11-11-2005, 13:35:29
bueno, voy a seguir tu consejo Lepe, espero tener suerte.
Gente, como siempre lo de ustedes majestuoso, gracias!!!!