Newsgroup: it.comp.lang.delphi
Titolo: Problema con eseguibile di grosse dimensioni

Sto lavorando ad un progetto decisamente monolitico in delphi 7
L'eseguibile prodotto sfiora i 13 mb, e veniva finora compresso con upx
per ottenere eseguibili di circa 2,8-3 mb
In questa forma, sono utilizzabili da sistemi con windows 98, che
altrimenti danno errore di memoria insufficiente
Il problema nasce dal fatto che se l'eseguibile compresso supera 3,1 mb,
ritorna l'errore per risorse insufficienti.....
Ora il problema è il seguente: quali accorgimenti potrei utilizzare per
mantenere la compatibilità con win98 (tutti pentium III con 128 mb di ram),
tenendo conto che:
1)il progetto non è suddivisibile in moduli come sarebbe stato nella
logica, ma tant'è che ormai è stato fatto così e non è possibile tornare
indietro per come è stato strutturato (io non c'entro nulla, l'ho ereditato
così e devo portarlo avanti)
2) non posso eliminare i client windows 98 (al massimo tentare qualche
settaggio)
Anticipatamente ringrazio chiunque avesse idee da suggerire
un saluto a tutti
Andrea

 upx per ottenere eseguibili di circa 2,8-3 mb
Hai pensato ad utilizzare i runtime packages?
-- 
Jax
====
Alcuni dicono che la pioggia è brutta, ma non sanno che permette di
girare a testa alta con il viso coperto dalle lacrime.

così e devo portarlo avanti)
Tu se hai i sorgenti sei padrone assoluto del programma: siccome l'environment
di win98 ha i suoi limiti, non hai altra scelta che dividere l'eseguibile.
Come fare?
Imho e' la volta buona che gli fai un bel refactoring a questo monolita
kubrikiano, sopratutto estrapolando le funzioni accessorie che possono essere
spostate tutte in una dll di supporto senza colpo ferire al funzionamento
dell'eseguibile.
Analizza il codice, ristrutturalo, ottimizzalo, ricava le funzioni di aiuto
(formattazione dati, ripetizione di operazioni, forms poco utilizzati,
controlli sui dati) e spostale in una dll.
Imho non hai altre possibilita': non puoi far entrare un elefante nel
frullatore. (per citare una vecchia barzelletta di Salvi ai tempi del Drive In
;)
Ciao
-- 
Morde. 
(
mo...@despammed.com
)
M-List di icld: 
http://it.groups.yahoo.com/group/icld/

 L'eseguibile prodotto sfiora i 13 mb, e veniva finora compresso con upx
[CUT]
La prima cosa che mi viene in mente e che fa aumentare di parecchio gli exe
sono le immagini.
Se non l'hai già fatto, e se il programma ne usa, prova ad esportare tutte
le immagini (icone, sfondi, pulsanti...)
in un file .res e caricalo successivamente a runtime.
Altra cosa, ma non credo darà molto giovamento, è il disabilitare le
informazioni di debug quando crei
l'exe da rilasciare. (Project/Options/Compiler -> togli Debug information e
lascia Optimization)
La soluzione più drastica è quella di riscrivere il codice non utilizzando
la vcl (sempre se la usi) ma di creare gli
oggetti runtime (soprattutto le query).
Purtroppo non so esserti d'aiuto più di così non sapendo com'è l'applicativo
;-)
Bye,
FNX

 frullatore. (per citare una vecchia barzelletta di Salvi ai tempi del
Drive In
Io e la mia ragazza abbiamo riso 20 minuti su questa battuta!

 Drive In
Ricordo che una volta un collega mi disse "ale, c...o, la mia applicazione 
va alla grande ma l'exe è di 12 MB..... Mhà".
Poi dando un'occhiata ai sorgenti mi accorgo che:
su circa 120 form era presente un pannello (align=alTop) che conteneva una 
immagine di sfondo (bitmap a 256cl  400x100)....
Se tutte le forms hanno in comune qualcosa perchè non sfruttare cio' ([ot] 
inizio ad odiare la tastiera francese) che viene chiamato ereditarietà?
Fatte le dovute modifiche da 12 MB l'exe è arrivato a 2,8 MB.
Non è che per caso c'è un massiccio copia e incolla di risorse?
Acqua

 controlli sui dati) e spostale in una dll.
Credo anch'io che sia l'unica soluzione.
Ma è di difficilissima applicabilità.
Oltretutto non mi è concesso il tempo necessario (a occhio almeno 3 mesi)
Per ora porterò le parti nuove in eseguibili esterni (cioè l'applicazione
potrebbe diventare un menu per il lancio di sub-exe con opportuni
parametri)
Grazie per l'interessamento

 
No.
E' dovuto anche un massicio impiego di componenti aggiuntivi che ormai ci
sono e, per come le forms sono strutturate,  difficilmente eliminabili
Saluti

dell'utente....
Ora ti capisco: ho fatto la stessa via crucis con un software consegnatomi
come "passaggio di consegne", in realta' l'ho dovuto riscrivere al 90%, ho
speso 3 mesi di tempo solo per il refactoring, il quale non e' stato mai
completato al 100% per mancanza di tempo.
Ciao, in bocca al lupo. :)
