![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Y porque no tomas el tamaño antes de adjuntarlo? Porque tienes que medirlo como recurso?
Y si mides el archivo antes de adjuntarlo, lo adjuntas y luego restas? Y me refiero a solo mirar el tamaño del archivo tal cual, sin entrar a su estructura interna.
__________________
El malabarista. |
|
#2
|
|||
|
|||
|
Coincido con mamcx, por que simplemente no haces el calculo del tamaño del exe de forma separada con el calculo del tamaño del icono y luego restas sumas o lo que tengas que hacer?
Saludos. |
|
#3
|
||||
|
||||
|
Hola a todos,
¡Ya somos unos cuantos! ![]() Cita:
Cita:
El tamaño del icono, por otro lado, es desconocido, es decir, lo escoje el propio usuario. Es cierto que podemos conocerlo, por supuesto, pero, por ejemplo, el tamaño del icono elegido puede hacer que el tamaño original del ejecutable varíe a más o a menos, puesto que el archivo ejecutable tiene ya un icono "por defecto" incorporado, que no tiene porqué coincidir (sería raro que lo hiciese) con el que elija el usuario. He pensado (pero no lo he llegado a intentar por mero aburrimiento, es decir, como una especie de decir basta ya) en utilizar un recurso del ejecutable sólo para guardar el tamaño del icono, de modo que después podamos hacer los cálculos necesarios. Es posible que funcionase... y además guardar dicho tamaño en un recurso del ejecutable no sería para nada problemático: ahora mismo guardo así hasta 500 MB. De hecho los cálculos no necesitan ser perfectos. Es decir, afortunadamente, lo que se guarda en el ejecutable es un archivo "zip", y, a la hora de descomprimir, digamos que la herramienta de descompresión (los componentes Abbrevia) se muestra tolerante, por ejemplo, si el tamaño del archivo "zip" original resulta "mayor" (dado el incremento del tamaño del icono) no hay problema aún así para descompromir el "stream zip" en cuestión. En fin, voy a tratar de pararme en esto, al menos para comprobar si pudiera funcionar... y os avisaré si logro hacerlo o si al cabo la cosa se complica de una forma no esperada. ¡Muchas gracias a todos! P.S. No obstante, ciertamente la función "GetExeSize" acaso debería funcionar tal como lo hacía antaño en Windows 9x. Seguramente mi traducción esté mal (apuesto por esto al 99%) o bien dicha función no funcionaría nunca en Windows NT... cosa que dudo muchísimo... |
|
#4
|
||||
|
||||
|
Hola a todos,
Bueno, pues, a ver si soy capaz de explicarme, pero, vaya por delante que al final parece que lo he/mos conseguido. Esta mañana quise probar lo que Mario y bitbow propusieron. Pues bien, el caso es que los resultados obtenidos no eran los esperados, esto es, la cosa funcionaba bien para determinados iconos, pero, no para otros. Ya había escrito aquí un mensaje describiendo esta situación, cuando, después de enviarlo (algunos lo habréis acaso recibido) he decidido borrarlo, puesto que algo no me cuadraba... En primer lugar he querido descubrir que la suma TAMAÑO EJECUTABLE + TAMAÑO ICONO, no coincidía con lo que obteníamos al medir el tamaño del ejecutable, una vez cambiado el icono. Yo esto lo he atribuido al hecho de que el icono se guarde en un determinado recurso del ejecutable: tal vez, entonces, el tamaño del icono no sea exactamente igual al tamaño final que tenga el recurso que alberga el icono. No estoy seguro de este párrafo en concreto, pero, el caso es que he borrado mi mensaje, y es que... ¿Por qué funcionaba con unos iconos pero no con otros? Y entonces he descubierto que el icono problemático, tenía en su interior varios tamaños de imagen, partiendo de un tamaño de 512 píxeles. He intentado abrir entonces el archivo ejecutable generado con el programa XN Resource Editor, y, en efecto, no he podido acceder al recurso "MAINICON", por un error "Pixel Format Not Valid for Icons or Cursors". Entonces he considerado que, aunque podía cambiarse dicho icono sin errores, tal vez dicho icono estaba jorobándolo todo, porque, de hecho el icono original del ejecutable tiene un tamaño máximo de 256 píxeles, y, si no me equivoco, Delphi XE2 no soporta (en Windows) iconos de más resolución que esa. De modo que ahora parecía que el problema no venía dado porque el TAMAÑO EJECUTABLE + TAMAÑO ICONO no coincidiese con el tamaño del ejecutable generado. El problema parecía causarlo el icono de tamaño de 512 píxeles, y, en efecto, al quitar la imagen de dicho tamaño del icono, o usando iconos de un tamaño máximo (no parece importar el mínimo) de 256 píxeles, la cosa parece funcionar como se espera... y ahora puedo obtener ejecutables "que funcionan" mayores de 1,5 GB. O sea, ¿prueba superada? Parece que sí, pero, me quedan algunas dudas al respecto y son las siguientes: 1º Sigo pensando que, en efecto, el TAMAÑO EJECUTABLE + TAMAÑO ICONO no coincide con el tamaño que al cabo el ejecutable tiene. Resulta que cuando se cambia el icono de un ejecutable, no se trata de sumar al tamaño del ejecutable el tamaño del archivo del icono, sino que este último se alberga en un recurso del ejecutable que, digamos, tiene su propio tamaño. Luego lo que yo estoy guardando ahora mismo, es decir, TAMAÑO EJECUTABLE + TAMAÑO ICONO, parece funcionar, sí, pero, aunque sin estar seguro, me atrevo a decir que funciona porque la descompresión del archivo tiene cierta "tolerancia", de modo que no importa si el "stream" que se lee es mayor que el original: la descompresión se realiza sin problemas. 2º Creo que la función "GetExeSize" debería seguir funcionando en Windows NT (no diré ya en Windows 64 bits, porque, aunque funcionase, tal vez el código tampoco tendría nada que ver). Si esta función hiciese su trabajo como lo hacía en los tiempos de Windows 9x, seguramente todo sería más sencillo, mejor dicho, más exacto, puesto que estaríamos obteniendo el tamaño del ejecutable original ya con el icono incluido... y teniendo en cuenta que el tamaño de este puede no tener que ver con el tamaño que ocupe el icono en el recurso correspondiente. 3º Tengo que tomar el camino del primer punto. Una vez descubierto que el causante del problema era un determinado icono (de tamaño excesivo) he querido probar con "GetExeSize", pero, no funciona. Es decir, de momento, tengo que tomar el camino sugerido por Mario y bitbow, puesto que, aunque no sea "exacto" (vamos, si no es que estoy completamente equivocado) parece funcionar correctamente, siempre que el icono no supere el tamaño máximo, pero, esto ya no es problema de la solución, sino de que iconos de más tamaño no parecen soportarse. En fin, voy a hacer unas cuantas pruebas más, pero, como digo, parece que el asunto se puede dar por solucionado... al menos mi proyecto puedo ahora "compilar" aplicaciones de más de 500 MB, y, además hacerlo de una forma más rápida y segura en todo caso, puesto que antes actualizaba un recurso del ejecutable "base", y, esto causaba problemas no sólo con archivos grandes, a veces también con los pequeños. Esta otra opción de "adjuntar" al ejecutable un archivo es más rápida y eficiente. ¡Muchas gracias a todos! ¡Comentaré por aquí cómo acaba la cosa! ![]() Última edición por dec fecha: 01-03-2017 a las 14:52:15. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| determinar el tamaño de una fichero | lmpadron | C++ Builder | 5 | 14-11-2011 23:04:27 |
| Determinar el tamaño óptimo de un datafile | SMTZ | Oracle | 2 | 03-02-2007 13:04:45 |
| Form Vuelve al Tamaño original | Enan0 | Varios | 5 | 15-08-2006 18:53:14 |
| como achicar el tamaño de mi Ejecutable | Patricio | Varios | 2 | 22-11-2005 13:48:45 |
| Como determinar el tamaño de una base de dato ? | Raptor | Varios | 4 | 06-08-2004 02:17:56 |
|