Newsgroup: it.comp.lang.delphi
Titolo: EOutOfResources

Ciao a tutti,
dunque... ho una form abbastanza complessa (per ragioni aziendali e, 
purtroppo, non mie) che viene visualizzata correttamente ma, alcune 
volte, muovendomi tra vari oggetti TPageControl e cambiando le pagine mi 
tira fuori l'errore EOutOfResources con messaggio "Memoria insufficiente 
per eseguire il comando".
Cercando in giro ho capito che è un problema delle classi Win32 (almeno 
credo) ma non capisco il perchè si verifichi attivando le varie pagine e 
non direttamente al caricamento della form.
Qualcuno di voi ha avuto a che fare con qualcosa del genere? - non so 
proprio come risolverlo -
Grazie,
David

 proprio come risolverlo -
Dò per scontato che sei un esperto, pertanto eviterò di darti i soliti 
consigli tipo di verificare cosa faccia il codice in corrispondenza di 
eventi, ecc.
Quando succedono errori di questo genere, che coinvolgono direttamente 
windows (ha esaurito lo stack a disposizione del programma), e non ci 
sono evidenti errori di programmazioni (costruzione di oggetti negli 
eventi, ricorsività non cercata) usa l'approco di scavare la montagna.
Prendi il codice e incomincia a commentare, pezzo per pezzo, parti di 
logica e eventi.
Dovresti arrivare a scoprire che cosa ti porta allo scoppio.
Fai uso attivo di query in qualcuna di queste pagine?
Fai copia di oggetti ripetutamente senza liberarne la memoria?
Purtroppo l'onchange del page è sempre delicato: fai un tracing delle 
funzioni chiamate, e poi fai girare uno smanettone che ti fa scoppiare 
il programma, e guarda il trace cosa dice...
Fammi sapere, queste cose mi incuriosiscono sempre molto :)
PS: già che ci siamo, buona pasqua, anzi adesso apro un OT..
Ciao
-- 
morde
D5,D6,D7
Firebird 2.1
QT 4.7.0 (MingW) QT Creator 2.1

 non direttamente al caricamento della form.
Il classico caso e' un pagecontrol.
Hai qualche tabsheet che sul primo evento OnShow va a creare un frame
che ha il tabsheet stesso come parent.
A quel punto, se prima avevi n handle occupati, ne avrai adesso n+m,
dove m e' il numero di handle totale del nuovo frame coi relativi
controlli visuali.
A.

Allora... dopo due giorni di prove ho "scoperto" che il problema è 
generato solamente su sistemi con Windows XP (con service pack 3) e si 
verifica se si passa tra varie TTabSheet con TPageControl annidati.
Vabbè tanto girerà solo su Windows 7 ma comunque vorrei sapere se 
qualcuno conosce qualche bug/limitazione di Windows XP su argomenti 
similari (tanto per non ricascarci)
Grazie

 non ricascarci)
Guarda qui è come cercare un ago in un pagliaio:il kernel da xp a seven 
è cambiato parecchio e di conseguenza anche l'API.. troppo complicato e 
dispendioso cercare una soluzione, imho.
Ah tra l'altro si dà per imminente l'uscita di win8.. e con questo noi 
vecchi aficionados di xp 32 bit sprofondiamo nel paleolitico..
ciao


 complicato e dispendioso cercare una soluzione, imho.
infatti. Personalmente ho l'esperienza di un mio sw che su *alcuni* XP
crea AV random, e su istruzioni senza senso (ad esempio il close di una
tabella), mentre su 7/64 funziona perfettamente. Sarà il kernel? sarà
qualche patch del sistema? sarà l'antivirus con le sue protezioni in
tempo reale che incricca la memoria? sarà qualche componente con dei
leak, che si vedono sotto XP ma non sotto 7 (che è più sofisticato
quanto a gestione della memoria)? boh, impossibile stabilirlo.
Ale

 vecchi aficionados di xp 32 bit sprofondiamo nel paleolitico..
L'ho sentito pure io ma basta che non sia un SO come ME o VISTA (utenti 
imbestialiti e programmatori in crisi per mettere patch al sistema)