OVH Cloud OVH Cloud

Demande de précision sur la portée et la déclaration de variables ??

4 réponses
Avatar
News Groups
Bonjour à tous, j'aimerai quelques précisions sur les points suivants :

Dans le cas où l'on à deux formulaires Formulaire 1 et 2 avec des modules
propres à ces formulaires (modules de classes)
et un module global A dont cetaines procédures et fonctions sont appelées
par ces 2 formulaires :
* Lorsque le formulaire 1 se charge le module global se charge aussi, ou
bien se charge t' il seulement si une de ses procédures est
appelées ?
* Lorsque le formulaire 1 est fermé, si aucun autre formulaire ouvert ne
fait référence à des procédures du module global A,
le module global A se "ferme t'il" aussi ?

Maintenant concernant les variables :
* Une variable déclarée Privée au niveau module du formulaire 1 est
désallouée de la mémoire lorsque le formulaire 1 est fermé ?
* qu'en est-il pour les variables globales du module global A ?

Sur les méthode de désallocation de mémoire :
* Pour un objet l'instruction Set MonObjet = Nothing ?
* Pour une variable simple (integer,string..) elle est désallouée
lorsqu'elle perd sa portée, mais pour la désallouée à un instant
voulu ?
* Pour les tableaux ?
* Pour les types de données personnalisés ?

Voilà, désolé pour ces multiples petites questions !
Mon but, en fait consiste, à vouloir nettoyer proprement la mémoire des
variables s'y trouvant !
Donc pour cela je voulais quelques précisions sur leurs comportements
notamment et celui des modules globaux et de classes ?

Merci de votre aide, toutes infos sont les bienvenues ! ;-)

Thierry.

4 réponses

Avatar
Raymond [mvp]
Bonjour.

je ne répondrai pas à tout mais dans le texte.

* Lorsque le formulaire 1 se charge le module global se charge aussi, ou
bien se charge t' il seulement si une de ses procédures est
appelées ?


Un module ne se charge que lorsqu'il est appelé.

* Lorsque le formulaire 1 est fermé, si aucun autre formulaire ouvert ne
fait référence à des procédures du module global A,
le module global A se "ferme t'il" aussi ?


Le module reste toujours en mémoire

Maintenant concernant les variables :
* Une variable déclarée Privée au niveau module du formulaire 1 est
désallouée de la mémoire lorsque le formulaire 1 est fermé ?


oui

* qu'en est-il pour les variables globales du module global A ?


Toujours allouées car module en mémoire

Sur les méthode de désallocation de mémoire :
* Pour un objet l'instruction Set MonObjet = Nothing ?
* Pour une variable simple (integer,string..) elle est désallouée
lorsqu'elle perd sa portée, mais pour la désallouée à un instant
voulu ?
* Pour les tableaux ?


Faire Redim du tableau (voir aide en ligne)

* Pour les types de données personnalisés ?


?


On fait ce qu'on peut.


--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"News Groups" a écrit dans le message de news:
4177d6cb$0$26031$
Bonjour à tous, j'aimerai quelques précisions sur les points suivants :

Dans le cas où l'on à deux formulaires Formulaire 1 et 2 avec des modules
propres à ces formulaires (modules de classes)
et un module global A dont cetaines procédures et fonctions sont appelées
par ces 2 formulaires :
* Lorsque le formulaire 1 se charge le module global se charge aussi, ou
bien se charge t' il seulement si une de ses procédures est
appelées ?
* Lorsque le formulaire 1 est fermé, si aucun autre formulaire ouvert ne
fait référence à des procédures du module global A,
le module global A se "ferme t'il" aussi ?

Maintenant concernant les variables :
* Une variable déclarée Privée au niveau module du formulaire 1 est
désallouée de la mémoire lorsque le formulaire 1 est fermé ?
* qu'en est-il pour les variables globales du module global A ?

Sur les méthode de désallocation de mémoire :
* Pour un objet l'instruction Set MonObjet = Nothing ?
* Pour une variable simple (integer,string..) elle est désallouée
lorsqu'elle perd sa portée, mais pour la désallouée à un instant
voulu ?
* Pour les tableaux ?
* Pour les types de données personnalisés ?

Voilà, désolé pour ces multiples petites questions !
Mon but, en fait consiste, à vouloir nettoyer proprement la mémoire des
variables s'y trouvant !
Donc pour cela je voulais quelques précisions sur leurs comportements
notamment et celui des modules globaux et de classes ?

Merci de votre aide, toutes infos sont les bienvenues ! ;-)

Thierry.




Avatar
News Groups
Merci encore Raymond de tes lumiéres,

Concernant la désallocation d'un Module Global en mémoire, si je comprend
bien :
une fois chargé, seule la fermeture de l'application le décharge de la
mémoire ?

Merci encore,
Thierry.

"Raymond [mvp]" a écrit dans le message de
news:
Bonjour.

je ne répondrai pas à tout mais dans le texte.

* Lorsque le formulaire 1 se charge le module global se charge aussi, ou
bien se charge t' il seulement si une de ses procédures est
appelées ?


Un module ne se charge que lorsqu'il est appelé.

* Lorsque le formulaire 1 est fermé, si aucun autre formulaire ouvert ne
fait référence à des procédures du module global A,
le module global A se "ferme t'il" aussi ?


Le module reste toujours en mémoire

Maintenant concernant les variables :
* Une variable déclarée Privée au niveau module du formulaire 1 est
désallouée de la mémoire lorsque le formulaire 1 est fermé ?


oui

* qu'en est-il pour les variables globales du module global A ?


Toujours allouées car module en mémoire

Sur les méthode de désallocation de mémoire :
* Pour un objet l'instruction Set MonObjet = Nothing ?
* Pour une variable simple (integer,string..) elle est désallouée
lorsqu'elle perd sa portée, mais pour la désallouée à un instant
voulu ?
* Pour les tableaux ?


Faire Redim du tableau (voir aide en ligne)

* Pour les types de données personnalisés ?


?


On fait ce qu'on peut.


--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"News Groups" a écrit dans le message de news:
4177d6cb$0$26031$
Bonjour à tous, j'aimerai quelques précisions sur les points suivants :

Dans le cas où l'on à deux formulaires Formulaire 1 et 2 avec des
modules


propres à ces formulaires (modules de classes)
et un module global A dont cetaines procédures et fonctions sont
appelées


par ces 2 formulaires :
* Lorsque le formulaire 1 se charge le module global se charge aussi, ou
bien se charge t' il seulement si une de ses procédures est
appelées ?
* Lorsque le formulaire 1 est fermé, si aucun autre formulaire ouvert ne
fait référence à des procédures du module global A,
le module global A se "ferme t'il" aussi ?

Maintenant concernant les variables :
* Une variable déclarée Privée au niveau module du formulaire 1 est
désallouée de la mémoire lorsque le formulaire 1 est fermé ?
* qu'en est-il pour les variables globales du module global A ?

Sur les méthode de désallocation de mémoire :
* Pour un objet l'instruction Set MonObjet = Nothing ?
* Pour une variable simple (integer,string..) elle est désallouée
lorsqu'elle perd sa portée, mais pour la désallouée à un instant
voulu ?
* Pour les tableaux ?
* Pour les types de données personnalisés ?

Voilà, désolé pour ces multiples petites questions !
Mon but, en fait consiste, à vouloir nettoyer proprement la mémoire des
variables s'y trouvant !
Donc pour cela je voulais quelques précisions sur leurs comportements
notamment et celui des modules globaux et de classes ?

Merci de votre aide, toutes infos sont les bienvenues ! ;-)

Thierry.








Avatar
Raymond [mvp]
Un module dit 'global', par définition doit servir à n'importe quel objet;
donc il est toujours en mémoire. Sauf peut-être si tu manipules bien les api
et que tu arrives à fermer les modules mais ce n'est pas le but de la
manoeuvre.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"News Groups" a écrit dans le message de news:
4178c49f$0$835$
Merci encore Raymond de tes lumiéres,

Concernant la désallocation d'un Module Global en mémoire, si je comprend
bien :
une fois chargé, seule la fermeture de l'application le décharge de la
mémoire ?

Merci encore,
Thierry.


Avatar
News Groups
Ok, vu.
Pour info en fait :
Ma question vient du fait que j'ai un module global utilisé par plusieurs
formulaires
et je peux avoir la situation suivante : un ou plusieurs de ces formulaire
peuvent être ouverts (un ou plusieurs)
à un moment donné et ensuite refermés et plus appelés durant le reste du
temps, c'est pour ce cas de config là
que je voudrais ne plus avoir mon module global en mémoire et le recharger,
ou non, suivant le besoin.

Merci,
Thierry.

"Raymond [mvp]" a écrit dans le message de
news: #uPl#
Un module dit 'global', par définition doit servir à n'importe quel objet;
donc il est toujours en mémoire. Sauf peut-être si tu manipules bien les
api

et que tu arrives à fermer les modules mais ce n'est pas le but de la
manoeuvre.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"News Groups" a écrit dans le message de news:
4178c49f$0$835$
Merci encore Raymond de tes lumiéres,

Concernant la désallocation d'un Module Global en mémoire, si je
comprend


bien :
une fois chargé, seule la fermeture de l'application le décharge de la
mémoire ?

Merci encore,
Thierry.