Newsgroup: it.comp.lang.delphi
Titolo: avvio eseguibile

salve ragazzi, ho un problema alquanto grave cn un programma scritto in 
delphi:
l'eseguibile funziona sulla MIA macchina (winxp sp2) ma non su quella del 
cliente(sempre winxp sp2!), causando un "errore nel modulo kernel32.dll" cn 
tanto di dump dei registri.
odio dover dire "sulla mia macchina funziona" ad un cliente, ma purtroppo ci 
sono stato costretto:'-( da cosa potrebbe mai dipendere?
eppure tutto quanto serve al programma per funzionare, c'č.
stavo pensando, č possibile compilare il programma in loco (dal cliente) 
senza installare delphi, ma magari portandomi dietro un compilatore da riga 
di comando?
in tal caso, quali sono i file utili alla compilazione che devo portarmi 
dietro? file di progetto, *.dfm, *.pas.. altro?
ovviamente č solo un'idea, se ne avete una migliore vi sarei grato se mi 
deste una mano.
Grazie a tutti

 di comando?
Per compilare a linea di comando puoi usare direttamente DCC32.EXE
Poi cosa ti devi portar dietro oltre DCC32.EXE, per fare un istallazione 
proprio minimale senza rad, non saprei
(anche se questa non è la soluzione al tuo problema)
Ciao
Gianni

 [...]da cosa potrebbe mai dipendere?
Dando per scontato che il codice sia scritto bene (difatti non è neanche
da escludere che un codice sbagliato funzioni sulla tua macchina e non
funzioni su un'altra, leggi: mera coincidenza), se non hai modo di
compilare sulla macchina del cliente, prova ad eseguire un log e vedere in
che punto si genera il problema.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Per compilare a linea di comando puoi usare direttamente DCC32.EXE
non esiste un equivalente del "Makefile" usato molto in C/C++ ?

 che punto si genera il problema.
il programma si inchioda appena avviato, prima del form.Show di sicuro, ma 
il punto preciso devo guardarlo quando sono sulla macchina del cliente. Sarà 
in uno degli eventi Activate scatenati dalla creazione automatica dei form 
(application.createform(tform1, form1)).. ma entro lunedì devo darglielo 
funzionante, nn posso mettermi a modificare il programma per effettuare dei 
log, per poi cercare il problema..per poi risolverlo..per poi togliere di 
nuovo i log, perché dovrei effettuare tutto ciò sul SUO computer(che non ha 
delphi) visto che sul mio il problema non esiste:'(

 delphi) visto che sul mio il problema non esiste:'(
imho, la tua lista di cose che "non puoi fare" è decisamente lunga.
Accantoniamola un attimo e facciamo una sintesi della tua situazione:
1) Ha una app che non funziona.
Se funzionasse, salvo enormi problemi sul pc del tuo cliente, il 
problema non si porrebbe
2) da te va ma dal cliente no.
Quindi, o fai un rito vodoo tra oggi e domani e dall'aldilà ti 
suggeriscono qualcosa,  oppure devi PER FORZA fare dei test sul pc del 
cliente.
3) Per trovare il punto che genera l'errore hai 2 strade:
a) installi delphi sul pc del cliente
Ma per farlo devi essere li e non puoi farlo oggi
b) oggi, che puoi, aggiungi un po di log alla tua app e lunedi, appena 
arrivi dal cliente, fai partire la versione modificata della tua app.
Se hai culo, trovi l'errore. Dato il tipo di errore, se la app è scritta 
bene dovrebbe essere roba di poco sistemare
Queste 2 strade non sono mutualmente esclusive.
Alcuni dritte:
0) se sul pc è attivo il drWatson, disattivalo.
1) la tua app è stata installata senza essersi loggati sul pc con un 
utente avente diritti di amministratore, tipo utenti power users.
2) la tua app usa midas.dll ma il setup non è impostato per 
autoregistrarla durante la installazione
3) la tua app usa Ado, ma la 180a cifra decimale della versione in uso 
da te è diversa da quella del cliente
4) hai lasciato la prop active a true sugli oggetti che gestiscono le 
connesioni al database come Tdatabase, TAdoConnection, ma dal cliente i 
riferimenti al db sono diversi.
Quando la app parte non trova i db dove dovrebbe e si inkazza
5) poco spazio sul disco c.
6) sul pc non è installata nessuna stampante
7) la tua app usa socket e sul pc del cliente è installato un firewall
-- 
Alberto Salvati
A NEAPOLITAN Delphi Developer who is studying c# and .net
"Dicette 'o pappece 'nfaccia 'a noce dammi 'o tiempo che pure te spertoso"

 Quando la app parte non trova i db dove dovrebbe e si inkazza
effettivamente le ho lasciate con active = true, ma uso ODBC, in questo caso 
i riferimenti saranno tutti puntati al DSN.. o no? l'ho fatto anche in altre 
occasioni e nn mi ha dato problemi:O
Mi sa che che devo andare di log...
t ringrazio per le dritte, mi saranno utili:-D

 7) la tua app usa socket e sul pc del cliente è installato un firewall
Se io facessi tutte queste operazioni allo start-up di un mio programma,
comincerei a preoccuparmi ;-)... in ogni caso il tentativo di accesso alla
rete, nel caso vi fosse installato un firewall, dovrebbe essere segnalato
dal fw stesso.  Ma concordo che da Windows c'è da aspettarsi di tutto.


 kernel32.dll" cn tanto di dump dei registri.
non mi sembra di aver letto con quale versione di Delphi hai compilato 
l'applicazione.
Con D6 e la ListView.ViewStyle := vsReport c'era un errore in kernel32.dll 
 
http://tinyurl.com/dwlpd
ma non penso sia il caso tuo, altrimenti non funzionerebbe neanche da te.
-- 
Mauro Falzari 
   [ 
http://digilander.libero.it/mauro.falzari
 ]
 
 "Se guardi nell'abisso, anche l'abisso guarda in te." 
   (Friedrich Nietzsche)

 comincerei a preoccuparmi ;-)... 
no comment.. ;)


 tstringlist che, se serve, può essere ovviamente salvata su file.
Il problema della TStringList è che salvi, eventualmente, il contenuto del
log solo arrivato ad un punto preciso del codice (i.e.: se l'applicazione
crolla prima, niente log).  Il log, invece, per definizione, funge da
scatola nera, memorizza tutto ciò che è accaduto fino all'ora del
disastro, quindi sarebbe meglio usare un semplice file con una "flush" ad
ogni scrittura.


 ogni scrittura.
sottoscrivo.


 ogni scrittura.
Io uso spesso la OutputDebugSstring, cosě non ho file in giro che possono
comunque dare dei problemi (disco pieno, permessi di scrittura e cose
simili).
Se fossi in PT, e se il caso fosse davvero disperato, andrei dal cliente con
il mio pc con l'app funzionante, rimpirei la fase di avvio di debug (magari
condizionati con delle $ifdef o con un flag impostabile da linea di comando
in modo da scoprire al volo il problema, ricompilare l'applicazione e fare
felice il cliente
-- 
Lis        
www.alessandroghezzi.it
O'Telma:   
http://snipurl.com/otelma
La vita senza allegria č una lampada senza olio (Walter Scott)

 tanto di dump dei registri.
Innanzi tutto le cose base: tu provi l'app come amministratore o come utente
normale? E dal cliente? A me č capitato che problemi di permessi mi
cerassero problemi che non mi sarei immaginato.
Un'altra soluzione potrebbe essere quella di ricompilare l'applicazione con
madException (cercalo con google). IMHO č fantastico, l'ho usato spesso e in
molti casi mi ha risolto problemi dove con il normale debugging non cavavo
un ragno dal buco
-- 
Lis        
www.alessandroghezzi.it
O'Telma:   
http://snipurl.com/otelma
Il giovane cammina piů veloce dell'anziano, ma l'anziano conosce la strada

 non esiste un equivalente del "Makefile" usato molto in C/C++ ?
In Delphi, il file .dpr funge già da "makefile".
In C/C++ è necessario il makefile[1] perché la compilazione segue un
percorso totalmente diverso.  Un "makefile" vero e proprio è, invece, in
Delphi, il .bpg (quello di un Project Group per intenderci).
-----
[1] o il file di progetto equivalente al .dpr di Delphi, come il .dev in
Dev C++.


Grazie a tutti
	Ciao
	MassimoB
 
---------------------------------
http://www.massimobeschi.it/
---------------------------------
Se tu pagare come dici tu ...
Io lavorare come dico io ...
Se tu pagare come dico io ...
Io lavorare come dici tu ...
---------------------------------

 via (i sistemi operativo intendo :P ).
Io uso molto VirtualPC di Microsoft e, a dispetto del nome, funziona davvero
molto bene  :-D
Scherzi a parte, è davvero molto comodo, ho una macchina virtuale per ogni
sistema operativo, da win95 a win2003, una gran comodità
-- 
Lis                 
www.alessandroghezzi.it
O'Telma Formula1:   
http://snipurl.com/otelma
Spesso tutti sono convinti che una cosa sia impossibile, finché arriva uno
sprovveduto che non lo sa e la realizza... (Albert Einstein)

 clienti per andare sicuro ... 
un'alternativa sarebbe il Remote Debugging ma l'unica volta che mi č servito, 
non ero riuscito a farlo funzionare (D6).
Questi i passi che avevo seguito:
- installare sulla macchina del cliente il remote debugger dal CD di Delphi;
- avviarlo;
- settare Project | Options | Linker | Include remote debug symbols [X];
- settare il Remote Path in Run | Parameters | Remote.
In teoria avrei dovuto eseguire il programma del cliente all'interno dell'IDE 
della mia macchina.


 tanto di dump dei registri.
Alla fine se e come hai risolto il problema? A cosa era dovuto?
-- 
Lis                 
www.alessandroghezzi.it
O'Telma Formula1:   
http://snipurl.com/otelma
E' più facile spezzare un atomo che un pregiudizio (Albert Einstein)