Newsgroup: it.comp.lang.delphi
Titolo: Chiusura applicazione [D5] + WIN XP + SP 2 (un poco lunghetto)

Ciao a tutti,
ho sperato di non dover postare questo messaggio perchè credevo di 
cavarlmela da solo con le informazioni recuperate via internet, ma la 
segnalazione d'errore che rilevo è troppo generica e neanche sul sito di 
Microsoft sono riuscito a trovare una spiegazione soddisfacente. Tante 
domande, ma niente risposte,
Magari qualcuno di voi ha già affrontato il mio stesso problema e ha trovato 
una soluzione.
Il 90% delle volte che una mia applicazione di circa 12 Mb. (come 
eseguibile) si apre tutto fila liscio.
Il programma gira tranquillamente e fa tutto quanto per bene.
Esiste invece un "maledetto" 10% il cui all'aprirsi dell'applicazione esce 
un messaggio di Microsoft (quella diavolo di segnalazione grigia) che cita :
"Si è verificato un errore in Gestione Aziendale. L'applicazione verrà 
chiusa."
Poi ci sono i tre tasti grigi : "Debug"  , "invia la segnalazione" e "non 
inviare".
Anche qui il 90% delle volte cliccando su "non inviare" il msg di Microsoft 
si chiude e l'applicazione continua regolarmente, ma il 10% delle altre 
l'applicazione viene chiusa improvvisamente. A volte basta rientrare e tutto 
fila liscio, altre volte è possibile che ricompaia l'errore e l'applicazione 
si chiuda.
Cliccare su "Debug" fa praticamente sempre chiudere l'applicazione e di 
"debug" non ne compaiono.
Nel registro degli eventi di sistema di XP il messaggio che verrebbe inviato 
a Microsoft (e che ho già inviato innumerevoli volte, chiaramente senza 
risposte) è il seguente :
"Applicazione che ha provocato l'errore rpeuro3.exe, versione 3.5.2.0, 
modulo che ha provocato l'errore kernel32.dll, versione 5.1.2600.2180, 
indirizzo errore 0x0001eb33."
rpeuro.exe è il nome dell'eseguibile.
Ora, se succedesse solo a me sulla mia macchina per lo sviluppo sarebbe un 
male gestibile, ma il problema è che avviene anche su quelle dei clienti.
E' un errore Random, sia su PC in monoutenza sia su client di rete. (rete 
intesa come un PC (server) che fa da contenitore di tutti i dati e su cui è 
caricato l'eseguibile e una serie di PC (Client) che si collegano 
all'eseguibile sul server e leggono e scrivono i dati sugli archivi sempre 
sul server).
Utilizzo il BDE come motore, ma il punto in cui avviene il problema è 
proprio all'apertura dell'applicazione, quando non ho ancora aperto nessun 
file.
Io non so più che pesci pigliare e credo che il guaio dipenda da XP con il 
SP2, in quanto sui PC W98 l'errore non compare mai, così come non accadeva 
prima del SP2.
Se qualcuno ha qualche idea, sarei molto grato che me la suggerisse.
Io per ora faccio spegnere i PC ai clienti e di solito poi l'applicazione 
funziona, ma il problema resta con tutta la sua casualità.
Grazie
Marco

Possibile che tu abbia ragione. Non ho mai utilizzato il BDE con il
SP2. Non mi piace l'idea che devo installare qualcosa anche per far
girare un db minimo.
Se usi access 2k, puoi dare un'occhiata al componente kadao su
www.torry.net
Questo componete peremette di gestire i db access 2k senza dover
installare il BDE.
A me non crea problemi neanche con il SP2. Vedi se fa al caso tuo.
Ciao ciao

Il primo passo è la creazione di un file di log dello startup della
applicazione. Lo crei nel dpr e prima e dopo ogni creazione di form e
datamodule messi in autocreate gli fai scrivere una riga, avendo cura
di forzare la scrittura su file.
Alla fine chiudi il file.
Fai in  modo da non sovrascrivere il file, avendo cura di usare un nome
diverso ad ogni avvio di applicazione.
Sarebbe anche utile che nel file di log riportassi la lista delle
applicazioni attive...
Poi, quando avrai capito, rimuovi files e modifiche dal codice.
In questo modo inizi a capire DOVE SI INKAZZA.
Poi ci sono una serie di cose da considerare...
sp2 monta quel maledetto sistema di protezione, prova a disattivarlo
per qualche giorno e vedi cosa succede.
Forse la tua app usa dei socket e quel fottuto sistema si comporta
grosso modo come un firewall....
Se la tua app fa uso di midas.dll accertati che ve ne sia una sola
copia.
Rimuovi i duplicati e registra l'unica che lasci con tregsrv o
regsvr32.
Gli utenti hanno i diritti di amministratore o no?
Non è che usi qualcosa che li richiede?
Sono magari solo membri di users?
AS
AS

 Marco
.. lo scorso anno quando uscì la nuova serie di processori Intel ho
avuto lo stesso problema, ed era dovuto alla mancata inizializzazione
della libreria jcl nell'identificazione del tipo di processore.
Controlla con task manager, nei pc che ti creano problemi, se vengono
visulizzati nella tab prestazioni due cpu. Se è così per risolvere
temporaneamente il problema, da bios disabilita l'ipertreading. Dopo
con tanta pazienza ed un buon debug trovi la parte di codice
incriminata. Se utilizzi la libreria jcl hanno risolto il problema,
basta che l'aggiorni, ciao.

Ciao,
rispondo a tutti quelli che mi hanno dato dei consigli su questa vicenda.
Scusate se non lo faccio sotto ogni Vs. post, ma con Outlook Express ed il 
server delle news di Tin.it non riesco a scaricare i Vs. messaggi che invece 
ho visto tramite google groups.
I consigli che mi avete dato, per ora, non sono applicabili alla mia 
procedura, ma mi hanno fatto sorgere due dubbi.
Il primo è che utilizzo, più o meno nel punto in cui di solito si blocca la 
unit JclSysInfo (funzioni GetLocalComputerName() e GetLocalUserName()) . 
Quindi, non essendo l'ultima versione, potrebbe anche darsi che dia noie su 
alcuni processori, anche se non credo che i miei clienti li abbiano e 
soprattutto non è il mio caso, in quanto uso ancora un ormai "vetusto" P III 
933, ma che devo dire fa benissimo il suo dovere.
Il secondo è che all'apertura del programma, per evitare le noie di XP sui 
refresh delle videate mentre sta facendo delle elaborazioni lunghe, ho 
inserito questa serie di istruzioni :
procedure TMainForm.DisableProcessWindowsGhosting;
var
  DisableProcessWindowsGhostingImp : procedure;
begin
    @DisableProcessWindowsGhostingImp :=
    GetProcAddress(GetModuleHandle('user32.dll'),
    'DisableProcessWindowsGhosting');
    if @DisableProcessWindowsGhostingImp <> nil
    then DisableProcessWindowsGhostingImp;
end;
Ora come prima prova ho disabilitato questo secondo punto, ma essendo un 
errore molto random, mi ci vorrà qualche giono di prova (ho installato la 
procedura su 5 diversi PC e ho chiesto agli utilizzatori di farmi sapere se 
si blocca ancora).
Per adesso Vi ringrazio tutti, anche solo per il Vs. interessamento che in 
ogni caso è sempre gradito.
Grazie
Marco


Me le canto e me le suono.
La procedura incriminata non č questa, dato che l'errore esce anche se la 
tolgo.
In piů senza di questa le elaborazioni un poco lunghe fanno fare alle 
videate le schifezze piů strane (solo con XP, con il W98 č tutto OK).
Me tapino,
proverň con l'aggiornare (se non togliere) la unit JclSysInfo e vediamo che 
accade.
Comunicherň i risultati.
Ciao
Marco 

Ciao a tutti,
scrivo perchè rimanga per chi ha avuto, ha o avrà il mio stesso problema.
Sembra, scrivo sembra, che il problema fosse dovuto in effetti alle librerie 
Jedi.
Ho scaricato la versione 1.98, l'ho sistemata per poterla compilare con i 
miei programmi e sembra, ribadisco, che ora tutto funzioni.
Ciao
Marco