Newsgroup: it.comp.lang.delphi
Titolo: Ridurre lo spazio ...

Ciao a tutti.
Qualcuno di voi ha conosce qualche tecnica particolare per ridurre lo spazio
del file .exe che sta diventando un po' troppo grosso.
L'unica idea che ho avuto sinora č stata quella di eliminare tutte le
chiamate a ShowMessage() e sostituirle con MessageDlg() (cosě la unit
Dialogs non viene + linkata) ma la riduzione č stata di poco inferiore ai
20kb ... ogni aiuto č ben accetto! :-)
--
- Carlo -
c.b...@libero.it

Prova con UPX, comprime gli eseguibili di oltre il 70% in media
(
http://wildsau.idv.uni-linz.ac.at/mfx/upx.html
). E' free. Se invece intendi
cosa modificare nel sorgente per ridurre drasticamente gli exe, temo ci sia
ben poco da fare, il linker gia' toglie tutto cio' che si puo' togliere, il
resto quindi presumibilmente serve.
Ciao, Sandro

 wrote in message
9ievvo$i778d$1...@ID-43509.news.dfncis.de...


 ha scritto nel messaggio
news:I0D27.6344$1u2.2...@news.infostrada.it...


 ha scritto nel messaggio
news:rlE27.6851$1u2.2...@news.infostrada.it...

Se non sbaglio è già così :-)
Ciao, Roberto

 Se non sbaglio è già così :-)
Non sbagli.
Testarlo oltretutto è facile: aggiungete tutte le unit che volete senza però
richiamare neppure una funzione di esse, vedrete che l'exe non cresce di una
virgola.


 ha scritto nel messaggio
news:ugH27.1235$2v6....@news.infostrada.it...

Ma come cavolo fanno i programmatori C++ a creare eseguibili di 50k?
utilizzano ESCLUSIVAMENTE chiamate API?!?!


> curiosità sai anche cosa fa per ridurre tanto l'eseguibile ?
usa algoritmi sofisticati per comprimere le varie sezioni dell'eseguibile, e
attacca a tutto un mini-decompressore in tempo reale di pochi k che
scompatta in ram riscostruendo la struttura reale dell'eseguibile. E' un
progetto estremamente interessante, free e in costante evoluzione, tra
l'altro e' multipiattaforma, compatta eseguibili dos, win32, linux, e un
sacco di altri formati.
Ciao, Sandro

utilizzano ESCLUSIVAMENTE chiamate API?!?!
Programmare in C++ senza una buona libreria di supporto e' un
vero massacro.  Se utilizzi esclusivamente chiamate API il codice
si riduce parecchio di dimensioni (ovviamente), tuttavia la
grandezza di un eseguibile e' un prezzo da pagare se si vuol
operare a + alto livello con un buon framework di sviluppo (come
la VCL) e risparmiare tempo.
--
CyberWalkie - walkietalkie(at)
libero.it

 la VCL) e risparmiare tempo.
c'e' anche da chiedersi se oggi che i pc viaggiano a tutta velocita' verso
l'essere equipaggiati con 1 Gb di RAM e 100 Gb di HD abbia un qualche senso,
altri che per puro diletto di programmazione, ridurre gli exe a pochi kb.
Ciao, Sandro

altri che per puro diletto di programmazione, ridurre gli exe a pochi kb.
Ci sono diversi ambiti specifici in cui ridurre un EXE a pochi kb
puo' avere senso, ma nella maggior parte dei casi si puo'
soprassedere a un centinaio di kb in piu' o in meno.  
--
CyberWalkie - walkietalkie(at)
libero.it

 CyberWalkie - walkietalkie(at)
libero.it

 soprassedere a un centinaio di kb in piu' o in meno.
mah.. forse al momento attuale si, ma considera che sono uscite da poco
schedine di memoria allo stato solido che arrivano a 640 Mb.. e tra un paio
d'anni le troveremo a Citta' Mercato in fine scorta a 4,9 euro.. :)
Ciao, Sandro

d'anni le troveremo a Citta' Mercato in fine scorta a 4,9 euro.. :)
D'accordo, ma il fatto che i supporti siano capienti non deve far
dimenticare i principi alla base della costruzione del software.
Ottenere software compatto e' comunque una buona cosa da tenere a
mente.  Non ci dimentichiamo che molta della potenza delle
macchine odierne non sarebbe realmente necessaria se non ci fosse
un sistema operativo dietro che succhia risorse.
--
CyberWalkie - walkietalkie(at)
libero.it

 un sistema operativo dietro che succhia risorse.
Sono d'accordo, tuttavia ritengo che per valutare che un programma sia ben
realizzato e costruito credo che siano piu' importanti le tecniche usate e
il know how di chi ci sta dietro che la dimensione finale dell'exe, che
dipende da troppe cose (sistema operativo, strati di software con relative
librerie che l'applicativo attraversa prima di arrivare all'hardware, ecc.)
tutte al di fuori della possibilita' del controllo del programmatore.
La' dove anche fosse possibile scavalcare il compilatore e ottimizzare il
codice (es.usando le api in modo massivo), diciamo pure arrivando, per
assurdo, a dimezzare la dimensione dell'exe, che differenza, operativa,
farebbe, dati i processori e i supporti di memoria attuali? Gli unici device
che hanno ancora problemi di spazio di memoria e velocita' sono i
dispositivi portatili (quelli ad es. con wince) ma anche li' le cose si
stanno muovendo velocemente, stanno anche cambiando le tecniche costruttive
dei processori. Si favoleggia gia' di processori, entro i prossimi 8 anni,
che gireranno a 20 GHz e funzioneranno con 1 solo Volt :)
Ciao, Sandro

farebbe, dati i processori e i supporti di memoria attuali?
Questa frase mi puzza di "640 Kb sono sufficienti per chiunque".
:-)
Dipende in che ambito lavori.
Ci sono ambiti in cui la compattezza del codice e' un fattore
determinante (vedi la programmazione per i sistemi "embedded") ed
e' quindi essa che guida nella realizzazione del software.
Viceversa, ci sono ambiti (forse la maggior parte) in cui questa
compattezza non e' poi cosi' determinante, pero' e' comunque
gradita.
Poi, Knuth insegna che non si dovrebbe mai procedere ad alcuna
ottimizzazione a priori e questo e' vero, considerando anche che
i compilatori odierni riescono a ottimizzare molto meglio il
codice, di come farebbe il programmatore.
--
CyberWalkie - walkietalkie(at)
libero.it