Newsgroup: it.comp.lang.visual-basic
Titolo: vb6 - exe troppo "pesante"

Ho completato il mio programma che compilato
crea un exe di oltre 10 mb.
Ho fatto largo uso dei "controlli utente" e ne ho
piazzati parecchi in diversi form.
Su PC di ultima generazione con XP nessun problema.
Su PC più datati con win98 il programma, in diversi
casi, si "pianta" al Show dei form con molti controlli.
Dice di non riuscire a caricare un controllo e da un
errore di run time (al momento non ricordo il numero).
Mi chiedevo se esistesse qualche opzione in fase
di compilazione per risolvere il problema.
Grazie per i Vostri eventuali suggerimenti.
Ciao, Sauro

 di compilazione per risolvere il problema.
Quando arrivi a compilare il danno è già fatto.
Alberto
-- 
Friedrich Nietzsche: Un po' di salute ogni tanto è il miglior rimedio 
per l'ammalato.

 Su PC piů datati con win98 il programma, in diversi


 Una curiosita, ma che fa???
 Preventivi, offerte, ordini, bolle, fatture, c/lavoro, distinte basi, cicli
di lavorazione, MRP, commesse, magazzino, rilevamento tempi e costi.
112 form.
Grazie per l'interessamento.
Ciao, Sauro

 bene. Oppure hai usato dei controlli non compatibili con quel S.O..
Per il setup non so cosa dire.
Per i controlli (un numero, una data, ecc.) penso di poter
escludere problemi perchč sui form piů semplici vengono
caricati correttamente.
Forse potrebbe generare dei problemi un numero troppo
elevato di controlli sullo stesso form.
Va beh, io ci ho provato.
Grazie dell'interessamento.
Ciao, Sauro

 elevato di controlli sullo stesso form.
Beh, un singolo form avrà al massimo, che so, 50-10 controlli. oltre, 
sarebbe una cosa ingestibile anche per l'utente.
E 100 controlli in un form sono una sciocchezza, per qualunque 
macchina.
Quindi, cercherei qualche altro problema.
Innanzitutto, devi capire se è un problema di performance o di sistema 
operativo. Ma questo lo vedi in 5 minuti con una qualunque macchina 
virtuale. Prima fai girare su un sistema come W98, a tutta CPU. Poi 
inizi a togliere Ram e CPU e riprovi.
A un certo punto avrai sicuramente sezionato l'errore, ossia potrai 
dire, con certezza, se si tratti di un errore di 'pesantezza' (mai 
visto, comunque, in tutta la mia vita), o (più probabilmente) di 
sistema operativo.
Ciao
Alberto
-- 
Georges Pompidou: Un uomo di stato è un politico che dona se stesso al 
servizio della nazione. Un politico è un uomo di stato che pone la 
nazione al suo servizio.

 112 form.
Mai pensato di utilizzare DLL ActiveX ???
saluti
-- 
Gianluca Cannalire
Microsoft MVP/MCP - Visual Basic
http://www.visual-basic.it
http://community.visual-basic.it/gianluca

 inizi a togliere Ram e CPU e riprovi.
Premetto che non sono programmatore come
professione "principale" ma bensě programmatore
della produzione in un'azienda metalmeccanica.
Da oltre vent'anni riscrivo sempre quasi il medesimo programma con linguaggi
diversi prima basic su mainframe HP poi in clipper su PC e adesso in VB6.
Questa della riduzione di Ram e CPU non la sapevo.
Se non ti richiede troppo tempo ti prego di specificare
maggiori dettagli di come si fa.
Grazie Alberto e ciao, Sauro

> Mai pensato di utilizzare DLL ActiveX ???
Si, certo che ci ho pensato.
Adesso perň, una volta installato il programma per
la prima volta con gli ocx standard, con il programma
in continua evoluzione č sufficiente rimandare l'exe
aggiornato.
Utilizzando le DLL gli aggiornamenti sono un po' piů
complessi.
E, per dirla tutta, non ho esperienza in merito e non vorrei
peggiorare un programma che in fondo gira anche se coi
problemi che ho segnalato.
Ciao Gianluca e grazie, Sauro

Il Mon, 23 Oct 2006 13:44:57 GMT, CRS snc ha scritto:
my2cents
E' un problema di controlli utente!
non te ne vare a male però il problema è proprio quello dei 10M
E' una dimensione assolutamente "atipica"...son troppi!
Non fa mai male ripeterlo ...spesso le cose più banali son quelle che ci
fanno prendere dei bei lapsus!
Controlla:
A) Grafica ...tu dici poca!...controlla che non ti sia scappata qualche
bitmap da qualche mega!
B) File risorse...casomai è lui mastodontico!...soluzione: file esterno
config.txt,config.ini,config.mdb...config.xml...etc etc...caso mai è li che
son finiti qualche MB di roba fra testi ed immagini!!!!
C) Compilato in codice nativo?
Prova ad ottimizzare per velocità...e poi per dimensione...quanto cambia la
cosa?
prova a fare questi controlli e poi sappimi dire!

 errore di run time (al momento non ricordo il numero).
zac
sarebbe importante invece sapere COSA non carica e che errore da!
Hai usato commondialog???
qualcosa del fantomatico macello che sono le dll chiamate "microsoft
Windows Common Control"???...a me han dato un sacco di problemi da Win2000
IN GIU'....devi trovare una versione che si azzecchi con win98 (mi ricordo
risolsi con un fix trovato nei meandri della rete)
Il progetto che sto modificando adesso (su base di altri) per dirtene una
...ha referenziato
Microsoft Windows Common control :
6.0 SP6
5.0 SP2
-3 6.0 SP5
Un incubo!!!.....anche perchè tirar via una versione significa andare a
caccia di tutte le form che lo usano!...

 maggiori dettagli di come si fa.
Serve un sistema di emulazione, come VirtualPC o VMWare.
Con questi software, crei delle macchine virtuali che eseguono come se 
fossero pc indipendenti. Chi sviluppa, ha sempre una serie di macchine 
virtuali, con i diversi S.O., a volte vergini a volte patchate, su cui 
testare gli applicativi. Queste macchine virtuali possono essere fatte 
girare limitando Ram, Cpu, Disco, ecc..., in modo da simulare le 
condizioni più disparate.
Ma se non hai tali software, è inutile che ti spieghi oltre.
Ciao
Alberto
-- 
Karl Marx: Uno scrittore è produttivo non nella misura in cui produce 
idee, ma nella misura in cui arricchisce l'editore che pubblica le sue 
opere.

 Ma se non hai tali software, è inutile che ti spieghi oltre.
Già.
Grazie Alberto.
Ciao, Sauro

 prova a fare questi controlli e poi sappimi dire!
Farò un po' di prove in merito.
Non ho molta esperienza di VB ma comunque fin
dall'inizio ho considerato i problemi di dimensioni
facendo largo uso delle funzioni per evitare
istruzioni ripetitive.
Forse ho invece esagerato con i "controlli utente"
creandone solo 7/8 ma mettendo solo quelli in
tutti i form (un numero, una data, ecc.).
Il TextBox di VB non mi piace per niente.
L'unica immagine utilizzata è un file esterno .BMP
(la ragione sociale della ditta) che uso nelle stampe
(bolle, fatture, ecc.).
Probabilmente mi deciderò a spezzare il programma
in due.
Ciao e grazie, Sauro

 Hai usato commondialog???
Come riferimenti ho utilizzato, oltre agli standard,
solo DAO 3.6
Come componenti:
Common dialog 6.0
Flexgrid control 6.0
Mapi control 6.0
Rich TexBox control 6.0
Tabbed Dialog control 6.0
Nient'altro.
Non utilizzo altre lingue oltre all'italiano.
Ciao e grazie, Sauro

 Già.
Microsoft Virtual PC 2004 è (da qualche mese) gratuito:
http://www.microsoft.com/italy/windows/virtualpc/default.mspx
Ciao


 Forse ho invece esagerato con i "controlli utente"
CHE COSA sono questi "controlli utente"???
Come hai fatto a farli???..che ci hai messo dentro?
Puoi spezzare il programma anche in 7 parti (se non hai esperienza tremo
all'idea di come possa tu farlo)
ma il problema di fondo rimane!
UN EXE di quella dimensione è assolutamente IMPOSSIBILE DA VERSI con le
info che ci hai dato!
QUINDI da qualche parte cresce!
e quindi ti richiedo.....
quali opzioni di compilazione hai impostato ??? (ma sai come si fa a
vederlo???)...che cosa sono questi "controlli utente"???..li hai sviluppati
tu??? che hai usato per farli? (che c'è dentro?)
 
A questo punto hai solleticato la mia curiosità!

> A questo punto hai solleticato la mia curiosità!
Mi chiamo Sauro Vicchi.
Sono ragioniere e ai miei tempi l'informatica non
si insegnava a scuola.
Ho 53 anni e porto la barba.
Forse ci siamo anche visti se eri a Bologna per
un pranzo qualche anno fà.
C'era ancora Lupo che porto un regalo per tutti.
Lavoro in un'azienda metalmeccanica e mi occupo
della programmazione della produzione (di cui mi
ritengo abbastanza esperto).
30 anni fa feci alcuni corsi di informatica a Cernusco
sul Naviglio presso Hewlett-Packard (database, query).
Avevamo acquistato un loro programma per la
gestione della produzione.
In seguito imparai una versione di basic con il quale
potevo fare dei programmi che completavano la
procedura di HP.
Nel 1992 imparai clipper da autodidatta e feci una
procedura per la produzione (ordini,bolle,fatture,
distinte basi, cicli di lavorazione, MRP, commesse, ecc.)
Sostituimmo il mainframe HP con 7 PC.
Fornii copie del programma anche ad alcuni nostri
fornitori che lo usano tuttora.
In seguito il programma in clipper (in DOS) non piaceva
più e decisi di rifarlo in VB6.
In un corso serale, per principianti, imparai solo qualche
fondamentale e l'utilizzo dei controlli.
Ho iniziato a lavoraci seriamente solo 3/4 anni fà.
Per non ripetere gli errori del passato questa volta ho
deciso di prepararmi un po' meglio prima di partire a
programmare e ho quindi preparato i miei "controlli utente".
Il TextBox di VB non mi piaceva affatto ed ho utilizzato
al suo posto dei controlli miei:
Uno per le date.
Uno per i numeri (che può richiamare una calcolatrice).
Uno per gestire i Memo.
E alcun altri; ma niente di particolarmente "pesante".
Mi sono forse espresso male quando ho detto di non
aver esperienza di VB6.
La verità è che non ho una formazione adeguata e che
lavoro da solo senza potermi confrontare con nessuno.
A parte questo NG che mi è stato utilissimo.
L'esperianza me la sto' quindi facendo da solo con
tante ore di lavoro anche la sera e i festivi (a rischio
divorzio ;-).
Ho scopiazzato molto per la verità, per le poche classi
che utilizzo, anche se non sono così abile come i più
giovani nell'utilizzo di internet.
Per la compilazione ho usato la "veloce"; proverò, come
dici, a usare quella "risparmia spazio".
Nelle avanzate non ho spuntato niente.
Il file risorse, se non ricordo male, serve per utilizzare
più lingue.
Non lo uso.
I vari config che hai nominato non mi dicono niente e non
li ho mai toccati (almeno volutamente).
Immagini nessuna.
Solo un file .BMP che utilizzo per la ragione sociale nelle
varie stampe.
Ho messo l'iconcina nei 112 form che ho fatto; ieri ho
provato a toglierle risparmiano circa 0,1 MB.
In un paio di form ho utilizzato il Tabbed control perchè
dovevo gestire 210 controlli.
Risultano tra i più pesanti.
Il mio stile di programmazione è forse vecchio; ti faccio
l'esempio di come gestisco un ordine.
Ho una tabella ed un form per le testate.
Ho una tabella ed un form per le righe di dettaglio (7 voci).
Leggo tutti i records di dettaglio con delle variabili array
(ipotizziamo 150 righe).
Man mano che l'utente sposta le pagine trasferisco i
valori di 7 serie di variabili sulle 7 righe dei controlli e
viceversa.
Intanto l'utente può variare dei valori.
Solo quando l'utente ha effettuato tutte la variazioni e
preme "Conferma" provvedo ad aggiornare il database.
Spero di aver soddisfatto la tua curiosità.
Accetto di buon grado critiche e consigli.
Ciao Vodka (a proposito come ti chiami?)
Sauro

 
http://www.microsoft.com/italy/windows/virtualpc/default.mspx
Questa sera me lo scarico a casa.
Grazie Gianluca.
Ciao, Sauro

 Sauro
Marco!
:o)

 spazio!...controlla un po!!!
Il più grosso frx che ho trovato ha 8 kb.
Mi permetto di elencarti di seguito i files di installazione
del mio programma (si chiama xFormOK).
Magari tu ci noti qualcosa di strano.
Nella cartella Pacchetto:
Nome del file       Data Modif.          Size
setup.exe               15/07/2000        142.336
SETUP.LST           25/10/2006          5.797
xFormOK.CAB     25/10/2006      6.796.974
Nella cartella  Pacchetto/Support:
Nome del file               Data Modif.          Size
ASYCFILT.DLL        08/03/1999        147.728
CmDlgIT.dll                 05/08/1998         33.792
COMCAT.DLL          01/06/1998         22.288
COMDLG32.OCX       07/05/1999        140.288
dao360.dll                  01/03/2004        561.179
expsrv.dll                  11/05/2003        380.957
FlxGdIT.dll                 05/08/1998         43.520
MSFLXGRD.OCX    07/05/1999        244.232
msjet40.dll                 16/03/2004      1.507.356
msjint40.dll                19/03/2003        176.157
msjter40.dll                11/05/2003         53.279
msjtes40.dll                01/03/2004        241.693
MSMAPI32.OCX    24/06/1998        137.000
MSMPIIT.DLL         05/08/1998         22.528
msrd2x40.dll            11/05/2003        421.919
msrd3x40.dll            11/05/2003        315.423
msrepl40.dll                01/03/2004        552.989
msvbvm60.dll            10/09/2002      1.388.544
mswdat10.dll            11/05/2003        831.519
mswstr10.dll            19/03/2003        614.429
OLEAUT32.DLL    12/04/2000        598.288
OLEPRO32.DLL    08/03/1999        164.112
RCHTXIT.DLL         05/08/1998         35.328
RICHED32.DLL        08/05/1998        174.352
RICHTX32.OCX        22/05/2000        203.976
SETUP.EXE               15/07/2000        142.336
Setup.Lst                   25/10/2006          5.797
SETUP1.EXE          15/07/2000        253.952
ST6UNST.EXE         15/07/2000         74.752
STDOLE2.TLB         03/06/1999         17.920
TabCtIT.dll             05/08/1998         22.016
TABCTL32.OCX    06/12/2000        209.608
VB5DB.DLL           18/06/1998         89.360
VB6IT.DLL               02/10/2000        122.128
VB6STKIT.DLL        15/07/2000        101.888
vbajet32.dll                11/05/2003         30.749
xFormOK.BAT         25/10/2006            221
xFormOK.DDF         25/10/2006            863
xFormOK.exe             25/10/2006     10.842.112
Grazie di tutto Marco.
Ciao, Sauro

 
http://www.microsoft.com/italy/windows/virtualpc/default.mspx
Ho memorizzato l'indirizzo ma non l'ho scaricato perchč
al momento non lo posso usare.
A casa ho XP Home edition e al lavoro Win98.
Ecco che finalmente ho trovato una differenza tra XP
Home edition e Professional   ;-)
Ciao, Sauro

 xFormOK.exe             25/10/2006     10.842.112
e questo mi sembra una esagerazione!!!...MAH!
BOH bisognerebbe sentire i guru del compilatore
FORSE
tu dichiari tantissime variabili come matrice...e queste occupano
spazio....ma non so come fai
Ho provato a dichiarare in un progetto di test
in un modulo
Public Test(10000) as variant ma mi prende l'exe solo 10KB
 
BOH!
di certo qualcosa fai per avere quell'exe mastodontico!


 di certo qualcosa fai per avere quell'exe mastodontico!
Non sei convinto che dipenda solo dai 112 form.
Forse hai ragione, Mah.
Quando c'era ancora Lupo gli mandai il programma per
farglielo vedere e commentare.
Allora non era ancora completo e non aveva dato i
problemi di cui abbiamo discusso.
Mi fece diversi rilievi sui dettagli ma non critico più di
tanto la struttura generale.
Merda è già l'una; meglio andare a dormire.
Ciao Marco.
Sauro

 Sauro
Intendiamoci bene altrimenti alla fine litighiamo!
Nessuno è un guru assoluto e c'è sempre da imparare!
ed alla fine quello che conta è che il cliente ABBIA quello che vuole in
tempi ragionevoli!
Se funziona ed il cliente è contento...tutto il resto son palle!
O discorsi da farsi su un NG tecnico! :o)
Detto questo...e non conoscendo più di tanto il tuo applicativo...
Mi sembra che qui si parli di altro...
ossia di un programma funzionante (e da tanto sembra)...
che evidenzia un "qualcosa" (non voglio chiamarlo bug) che NON lo fa
funzionare su una certa configurazione!
ORA tirando un po le fila
concentriamoci sulle ipotesi di esplosione sotto win98
io tornerei qui:ASYCFILT.DLL        08/03/1999        147.728

Controllerei....
visto che XP probabilmente ha WinUpdate attivo e win98 in quanto
abbandonato sicuramente sarà in balia di se stesso e dell'utonto
SERVICE PACK di VB?
se sulla macchina di sviluppo hai VB sp5(sp4....sp6)....devi avere i
runtime aggiornati anche in win98!
DAO service pack???...jet aggiornamento
http://www.microsoft.com/downloads/details.aspx?FamilyID=4335216c-8cdd-4168-a030-46f815d3f5cd&DisplayLang=it
Risolto qualcosa?
A questo punto controllerei anche "l'inferno delle dll"...
guarda le versioni di tutti i controlli...coincidono con quelle installate
sul win98?
Risolto qualcosa?
Altra prova ...avvia task manager(o analogo in win98...non ricordo come si
chiama)...impostalo per vedere la quantità di memoria occupata...lancia il
tuo programma...guarda la memoria....adesso lancia la form che ti pianta
tutto...se vedi che fa in overflow allora è davvero il tuo programma e ti
tocca:
a) fare un disclaimer (per girare correttamente ha bisogno di XY MB di
memoria)
oppure
b)Rivedere la logica del tuo programma
oppure
c) Fregarsene .......anzi approfittane per vendergli un pc nuovo con XP!una
azienda che non può permettersi di spendere dai 500 ai 700 euro per un pc
nuovo ...merita la quantità di tempo che ti fa perdere?
P.s.
Hai detto che fai form "pienotte"
http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q229756
lo conosci vero???...si se sotto XP gira senza problemi!
inoltre c'era una vecchia disussione
http://groups.google.it/group/it.comp.lang.visual-basic/browse_frm/thread/a7082c548900ca0d/758350412ae87f1d?lnk=st&q=vb6+dimensione+exe&rnum=3&hl=it#758350412ae87f1d
per l'interfaccia ne parliamo nel post separato!

 Ciao
Secondo me č meglio vmplayer:
- lo scarichi da 
http://www.vmware.com
 (gratuito)
- su 
http://www.easyvmx.com
 crei la macchina virtuale da eseguire (sempre
gratis)
Ciao
-- 
Stefano "HappyMan"

> molto meglio del mouse
zac
Post dell'interfaccia...scanniamoci pure... :o)
La vecchia testiera per fare dataentry...ok!
Io ragiono così:
L'interfaccia a cosa serve?
A fornire informazioni sul programma!
E' una cosa assolutamente svincolata dal programma sottostante...ben lo sa
chi ragiona con NET o OOP...l'esempio è PostgreSQL...il programma (che
probabilmente è davvero uno de i più potenti database esistenti) è LI'
...l'interfaccia non esiste....la puoi scegliere fra le tante
disponibili!...un po per tutti si siestemi operativi!
E veniamo all'interfaccia...
Microsoft con la serie Visual ha fatto danni incalcolabili!
"Ho visto cose che voi umani manco vi sognate"
Form con 
testate piene di textbox
parte centrale ...griglia infinita
footer ...tabbed control con 10 tabbed pieni di decine di textbox...scoll
dappertutto....ci vorrebbe un monitor 16:9 da 32" per vedere tutta la form
dall'altra parte
Form Unix like
Cursore Lampeggiante...input velocissimo se sei in quella pagina...se però
dovevi cercare un pagamento...allora diventavi un pianista clikkando
combinazioni di tasti alla Mozart
IN MEDIO STAT VIRTUS
Io come ho detto faccio così
preferisco avere TANTE form con pochi controlli....
Ed avere una pagina ...ops una form...che raggruppa 
Il 99% delle volte questa pagina ha un griglia
Le griglie son comode...se poi riesci a fare una riga di un colore ed una
di un altra...son leggibilissime(certo se mi fai una riga fucsia ed una
verde pisello)...l'utonto ha un senso di sicurezza...i dati gli sembrano
ordinati...ha lui il controllo!
Dalla mia griglia cliccando su una cella si "esplode" una form se quel dato
deriva da qualcosa d'altro!
es.cliccando su "Brugola"...appare la form degli articoli con evidenziato
"brugola" e tutte le info
Cliccando su "pagamento"...appare la form dei pagamenti ammessi per quel
cliente...e relative forzature per aggiungerne altri
e via dicendo
Il data entry poi l'ho risolto organizzando i controlli nel form (mia
esperienza...alle segretarie piace cliccare su enter...ergo...con enter ti
sposti tra i vari controlli della form) ...se ci sono combo...c'è
l'autocompletamento...dove c'è la possibilità di cercare c'è il tasto
"trova" o "aggiungi"
Se non siamo in inserimenti delicati ...in genere mi chiede se voglio
continuare con l'input (anzi questo msgbox l'ho parametrizzato...quasi
tutti mi chiedono dopo una settimana di disattivarlo...e il nuovo input
avviene semplicemente premendo invio su salva...inserisce pulisce form e
via con una nuova serie di dati!)
Io mi son fatto una serie di routine per l'interfaccia...
per riempire la toolbar
per riempire la status bar
per gestire la ricerca
le stampe (anche le stampe...dopo un po diventano tantissime...io ho una
form standard...gli passi un nome convenzionale (generalmente il nome del
form...o il nome di una procedura "ANAGFORNITORI")...lui ti cerca tutte le
stampe possibili per quel nome....te le mostra con l'optionbox...clicchi su
quella che vuoi e poi su esegui...ci pensa lui a chiamare ed impostare le
cose giuste!
Io non son fanatico dell'interfaccia visual...ma nemmeno di quella full
text...oramai le info che dobbiamo avere son tantissime....e l'interfaccia
fulltext non consente se non distribuendo su più pagine (e quindi di fatto
divenendo sconveniente come la visual) le info
CERTO 
Visual fino ad un certo punto
...npon trovo più il link...c'era un sito web che mostrava le interfacce
più brutte ed incasinate!...mmmm se lo ritrovo lo posto!
Saluti!

 piů brutte ed incasinate!...mmmm se lo ritrovo lo posto!
hall of shame. era
http://www.iarchitect.com/mshame.htm
ma hanno cambiato tutto, ora e' una specie di motore di ricerca
http://www.iarchitect.com/

 gratis)
Aggiungo anche che con questo sistema si possono creare più macchine
virtuali ognuna con il proprio ambiente di sviluppo, io per esempio ne ho
tre con VS6, VS2003, VS2005.
La controindicazione è la necessità di risorse "adeguate" (hard disk
capiente, almeno 80 GB e almeno 1 GB da ram, meglio 1.5 o 2).
Una nota che tengo ad evindenziare è la stabilità di quel prodotto (il
player), mai un crash in più di un anno di uso quotidiano. 
Ciao
-- 
Stefano "HappyMan"
http://www.thepoint.info

 player), mai un crash in più di un anno di uso quotidiano. 
Io ci sono riuscito con Vista 32bit.
Ma non sapevo quale configurazione hardware utilizzare, ho preso la 
default per Longhorn, e alla chiusura del sistema si freezava 
all'infinito. Poi ho cambiato alcuni parametri, non ricordo esattamente 
cosa, e adesso va benissimo anche Vista.


> Intendiamoci bene altrimenti alla fine litighiamo!
No, no.
Niente litigi.
Mi arrendo.
Mi studierň una grid da utilizzare nei casi piů complessi.
Ho letto  il tuo post ed anche il seguente cercando
di seguirti ma non ci sono riuscito.
Ho i miei limiti di conoscenza di VB6 e altri programmi
correlati.
La versione di VB6 che utilizzo sulle diverse macchine
č la medesima con syspack 5.
Ciao Marco e grazie.
Sauro