OVH Cloud OVH Cloud

Portée d'une variable

7 réponses
Avatar
Christophe
Bonjour,

voilà j'ai une MDIform, feuille1 est une mdifille.

Dans feuille1 je declare:

private lp() as long

j'affecte une dimension puis des valeurs à lp() dans le code de feuille1
ex: lp(1) , lp(0)=1, lp(1)=2

je ferme la fenetre

je reouvre la fenetre la valeur de lp est conservée.
Pourquoi?

Christophe Vergon

7 réponses

Avatar
Christian Hugoud - Xtrem7
Est-tu certain que la feuille soit réellement déchargée ?

1) unload MyForm
2) set MyForm = nothing

Christian


"Christophe" a écrit dans le message de
news:blbb0o$d8l$
Bonjour,

voilà j'ai une MDIform, feuille1 est une mdifille.

Dans feuille1 je declare:

private lp() as long

j'affecte une dimension puis des valeurs à lp() dans le code de


feuille1
ex: lp(1) , lp(0)=1, lp(1)=2

je ferme la fenetre

je reouvre la fenetre la valeur de lp est conservée.
Pourquoi?

Christophe Vergon





Avatar
Christophe
??
Si je ferme la fenetre fille avec le bouton de fermeture (x) en haut à
droite, la fenetre est fermée non ?
l'evenement unload de la feuille se produit

Christophe Vergon

"Christian Hugoud - Xtrem7" a écrit dans le message de
news: blbcqa$vea$
Est-tu certain que la feuille soit réellement déchargée ?

1) unload MyForm
2) set MyForm = nothing

Christian


"Christophe" a écrit dans le message de
news:blbb0o$d8l$
> Bonjour,
>
> voilà j'ai une MDIform, feuille1 est une mdifille.
>
> Dans feuille1 je declare:
>
> private lp() as long
>
> j'affecte une dimension puis des valeurs à lp() dans le code de
feuille1
> ex: lp(1) , lp(0)=1, lp(1)=2
>
> je ferme la fenetre
>
> je reouvre la fenetre la valeur de lp est conservée.
> Pourquoi?
>
> Christophe Vergon
>
>
>




Avatar
Christian Hugoud - Xtrem7
Je ne suis pas aussi catégorique : le fait de fermer la fenêtre avec le
bouton de fermeture envoie un WM_CLOSE à la fenêtre. Cela ne veut pas
dire que la fenêtre est déchargée (il suffit de mettre le cancel à TRUE
dans l'évènement Unload pour que cela empêche le déchargement).

Le fait que l'évènement Unload soit appelé semble dire effectivement que
la feuile soit déchargée ; cependant, il est maintenant connu sous VB
qu'il est fortement préfèrable de faire le Set MyForm = nothing, pour
être à peu près certain que la feuille soit déchargée IMMEDIATEMNT (les
fonctionnements de Windows sont parfois asynchrones... bon courage).

Un test : depuis une autre feuille, fait un Unload et un Set à nothing
de la feuille concernée. Cela donnera déjà une piste...

@+

Christian



"Christophe" a écrit dans le message de
news:blbd3t$fp7$
??
Si je ferme la fenetre fille avec le bouton de fermeture (x) en haut à
droite, la fenetre est fermée non ?
l'evenement unload de la feuille se produit

Christophe Vergon

"Christian Hugoud - Xtrem7" a écrit dans le


message de
news: blbcqa$vea$
> Est-tu certain que la feuille soit réellement déchargée ?
>
> 1) unload MyForm
> 2) set MyForm = nothing
>
> Christian
>
>
> "Christophe" a écrit dans le message de
> news:blbb0o$d8l$
> > Bonjour,
> >
> > voilà j'ai une MDIform, feuille1 est une mdifille.
> >
> > Dans feuille1 je declare:
> >
> > private lp() as long
> >
> > j'affecte une dimension puis des valeurs à lp() dans le code de
> feuille1
> > ex: lp(1) , lp(0)=1, lp(1)=2
> >
> > je ferme la fenetre
> >
> > je reouvre la fenetre la valeur de lp est conservée.
> > Pourquoi?
> >
> > Christophe Vergon
> >
> >
> >
>
>




Avatar
Christophe
merci je va tester, mais j'aimerais comprendre!

"Christian Hugoud - Xtrem7" a écrit dans le message de
news: blbe2v$4pd$
Je ne suis pas aussi catégorique : le fait de fermer la fenêtre avec le
bouton de fermeture envoie un WM_CLOSE à la fenêtre. Cela ne veut pas
dire que la fenêtre est déchargée (il suffit de mettre le cancel à TRUE
dans l'évènement Unload pour que cela empêche le déchargement).

Le fait que l'évènement Unload soit appelé semble dire effectivement que
la feuile soit déchargée ; cependant, il est maintenant connu sous VB
qu'il est fortement préfèrable de faire le Set MyForm = nothing, pour
être à peu près certain que la feuille soit déchargée IMMEDIATEMNT (les
fonctionnements de Windows sont parfois asynchrones... bon courage).

Un test : depuis une autre feuille, fait un Unload et un Set à nothing
de la feuille concernée. Cela donnera déjà une piste...

@+

Christian



"Christophe" a écrit dans le message de
news:blbd3t$fp7$
> ??
> Si je ferme la fenetre fille avec le bouton de fermeture (x) en haut à
> droite, la fenetre est fermée non ?
> l'evenement unload de la feuille se produit
>
> Christophe Vergon
>
> "Christian Hugoud - Xtrem7" a écrit dans le
message de
> news: blbcqa$vea$
> > Est-tu certain que la feuille soit réellement déchargée ?
> >
> > 1) unload MyForm
> > 2) set MyForm = nothing
> >
> > Christian
> >
> >
> > "Christophe" a écrit dans le message de
> > news:blbb0o$d8l$
> > > Bonjour,
> > >
> > > voilà j'ai une MDIform, feuille1 est une mdifille.
> > >
> > > Dans feuille1 je declare:
> > >
> > > private lp() as long
> > >
> > > j'affecte une dimension puis des valeurs à lp() dans le code de
> > feuille1
> > > ex: lp(1) , lp(0)=1, lp(1)=2
> > >
> > > je ferme la fenetre
> > >
> > > je reouvre la fenetre la valeur de lp est conservée.
> > > Pourquoi?
> > >
> > > Christophe Vergon
> > >
> > >
> > >
> >
> >
>
>




Avatar
Christian Hugoud - Xtrem7
Il semblerait que le fait de faire un Set MyForm = nothing force le
déchargement à se faire dans l'immédiat. Dans beaucoup de cas, l'OS fait
son job de son coté (quand il a le temps), et l'appli travaille de son
coté à elle (exemple dans la création des raccourcis).

= nothing ressemble dans l'idée à un flush en C.

Ceci est mon analyse, et n'engage que moi.

Autre pb possible, MyForm est affecté à une variable quelque part. Dans
ce cas MyForm ne peut pas être déchargée.

Tu peux aussi dans le Unload faire un Redim lp(0).
Mais attention : si la feuille n'est pas déchargée, lors d'un nouvel
affichage, le Load ne sera pas appelé.

Tu peux regarder dans la FAQ : il y a (de mémoire) un article qui traite
de comment s'arrêter une appli VB proprement. Cela traite exactement des
pb de déchargement.

Christian.


"Christophe" a écrit dans le message de
news:blbl1v$p03$
merci je va tester, mais j'aimerais comprendre!

"Christian Hugoud - Xtrem7" a écrit dans le


message de
news: blbe2v$4pd$
> Je ne suis pas aussi catégorique : le fait de fermer la fenêtre avec


le
> bouton de fermeture envoie un WM_CLOSE à la fenêtre. Cela ne veut


pas
> dire que la fenêtre est déchargée (il suffit de mettre le cancel à


TRUE
> dans l'évènement Unload pour que cela empêche le déchargement).
>
> Le fait que l'évènement Unload soit appelé semble dire effectivement


que
> la feuile soit déchargée ; cependant, il est maintenant connu sous


VB
> qu'il est fortement préfèrable de faire le Set MyForm = nothing,


pour
> être à peu près certain que la feuille soit déchargée IMMEDIATEMNT


(les
> fonctionnements de Windows sont parfois asynchrones... bon courage).
>
> Un test : depuis une autre feuille, fait un Unload et un Set à


nothing
> de la feuille concernée. Cela donnera déjà une piste...
>
> @+
>
> Christian
>
>
>
> "Christophe" a écrit dans le message de
> news:blbd3t$fp7$
> > ??
> > Si je ferme la fenetre fille avec le bouton de fermeture (x) en


haut à
> > droite, la fenetre est fermée non ?
> > l'evenement unload de la feuille se produit
> >
> > Christophe Vergon
> >
> > "Christian Hugoud - Xtrem7" a écrit dans le
> message de
> > news: blbcqa$vea$
> > > Est-tu certain que la feuille soit réellement déchargée ?
> > >
> > > 1) unload MyForm
> > > 2) set MyForm = nothing
> > >
> > > Christian
> > >
> > >
> > > "Christophe" a écrit dans le message de
> > > news:blbb0o$d8l$
> > > > Bonjour,
> > > >
> > > > voilà j'ai une MDIform, feuille1 est une mdifille.
> > > >
> > > > Dans feuille1 je declare:
> > > >
> > > > private lp() as long
> > > >
> > > > j'affecte une dimension puis des valeurs à lp() dans le code


de
> > > feuille1
> > > > ex: lp(1) , lp(0)=1, lp(1)=2
> > > >
> > > > je ferme la fenetre
> > > >
> > > > je reouvre la fenetre la valeur de lp est conservée.
> > > > Pourquoi?
> > > >
> > > > Christophe Vergon
> > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>




Avatar
Christophe
Le fait que feuille1 soit MDIfille n'a -t-il pas une consequence ?

Christophe Vergon
"Christian Hugoud - Xtrem7" a écrit dans le message de
news: blbmc4$78m$
Il semblerait que le fait de faire un Set MyForm = nothing force le
déchargement à se faire dans l'immédiat. Dans beaucoup de cas, l'OS fait
son job de son coté (quand il a le temps), et l'appli travaille de son
coté à elle (exemple dans la création des raccourcis).

= nothing ressemble dans l'idée à un flush en C.

Ceci est mon analyse, et n'engage que moi.

Autre pb possible, MyForm est affecté à une variable quelque part. Dans
ce cas MyForm ne peut pas être déchargée.

Tu peux aussi dans le Unload faire un Redim lp(0).
Mais attention : si la feuille n'est pas déchargée, lors d'un nouvel
affichage, le Load ne sera pas appelé.

Tu peux regarder dans la FAQ : il y a (de mémoire) un article qui traite
de comment s'arrêter une appli VB proprement. Cela traite exactement des
pb de déchargement.

Christian.


"Christophe" a écrit dans le message de
news:blbl1v$p03$
> merci je va tester, mais j'aimerais comprendre!
>
> "Christian Hugoud - Xtrem7" a écrit dans le
message de
> news: blbe2v$4pd$
> > Je ne suis pas aussi catégorique : le fait de fermer la fenêtre avec
le
> > bouton de fermeture envoie un WM_CLOSE à la fenêtre. Cela ne veut
pas
> > dire que la fenêtre est déchargée (il suffit de mettre le cancel à
TRUE
> > dans l'évènement Unload pour que cela empêche le déchargement).
> >
> > Le fait que l'évènement Unload soit appelé semble dire effectivement
que
> > la feuile soit déchargée ; cependant, il est maintenant connu sous
VB
> > qu'il est fortement préfèrable de faire le Set MyForm = nothing,
pour
> > être à peu près certain que la feuille soit déchargée IMMEDIATEMNT
(les
> > fonctionnements de Windows sont parfois asynchrones... bon courage).
> >
> > Un test : depuis une autre feuille, fait un Unload et un Set à
nothing
> > de la feuille concernée. Cela donnera déjà une piste...
> >
> > @+
> >
> > Christian
> >
> >
> >
> > "Christophe" a écrit dans le message de
> > news:blbd3t$fp7$
> > > ??
> > > Si je ferme la fenetre fille avec le bouton de fermeture (x) en
haut à
> > > droite, la fenetre est fermée non ?
> > > l'evenement unload de la feuille se produit
> > >
> > > Christophe Vergon
> > >
> > > "Christian Hugoud - Xtrem7" a écrit dans le
> > message de
> > > news: blbcqa$vea$
> > > > Est-tu certain que la feuille soit réellement déchargée ?
> > > >
> > > > 1) unload MyForm
> > > > 2) set MyForm = nothing
> > > >
> > > > Christian
> > > >
> > > >
> > > > "Christophe" a écrit dans le message de
> > > > news:blbb0o$d8l$
> > > > > Bonjour,
> > > > >
> > > > > voilà j'ai une MDIform, feuille1 est une mdifille.
> > > > >
> > > > > Dans feuille1 je declare:
> > > > >
> > > > > private lp() as long
> > > > >
> > > > > j'affecte une dimension puis des valeurs à lp() dans le code
de
> > > > feuille1
> > > > > ex: lp(1) , lp(0)=1, lp(1)=2
> > > > >
> > > > > je ferme la fenetre
> > > > >
> > > > > je reouvre la fenetre la valeur de lp est conservée.
> > > > > Pourquoi?
> > > > >
> > > > > Christophe Vergon
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>




Avatar
Christian Hugoud - Xtrem7
Je ne pense pas.

"Christophe" a écrit dans le message de
news:blbnb9$r7r$
Le fait que feuille1 soit MDIfille n'a -t-il pas une consequence ?

Christophe Vergon
"Christian Hugoud - Xtrem7" a écrit dans le


message de
news: blbmc4$78m$
> Il semblerait que le fait de faire un Set MyForm = nothing force le
> déchargement à se faire dans l'immédiat. Dans beaucoup de cas, l'OS


fait
> son job de son coté (quand il a le temps), et l'appli travaille de


son
> coté à elle (exemple dans la création des raccourcis).
>
> = nothing ressemble dans l'idée à un flush en C.
>
> Ceci est mon analyse, et n'engage que moi.
>
> Autre pb possible, MyForm est affecté à une variable quelque part.


Dans
> ce cas MyForm ne peut pas être déchargée.
>
> Tu peux aussi dans le Unload faire un Redim lp(0).
> Mais attention : si la feuille n'est pas déchargée, lors d'un nouvel
> affichage, le Load ne sera pas appelé.
>
> Tu peux regarder dans la FAQ : il y a (de mémoire) un article qui


traite
> de comment s'arrêter une appli VB proprement. Cela traite exactement


des
> pb de déchargement.
>
> Christian.
>
>
> "Christophe" a écrit dans le message de
> news:blbl1v$p03$
> > merci je va tester, mais j'aimerais comprendre!
> >
> > "Christian Hugoud - Xtrem7" a écrit dans le
> message de
> > news: blbe2v$4pd$
> > > Je ne suis pas aussi catégorique : le fait de fermer la fenêtre


avec
> le
> > > bouton de fermeture envoie un WM_CLOSE à la fenêtre. Cela ne


veut
> pas
> > > dire que la fenêtre est déchargée (il suffit de mettre le cancel


à
> TRUE
> > > dans l'évènement Unload pour que cela empêche le déchargement).
> > >
> > > Le fait que l'évènement Unload soit appelé semble dire


effectivement
> que
> > > la feuile soit déchargée ; cependant, il est maintenant connu


sous
> VB
> > > qu'il est fortement préfèrable de faire le Set MyForm = nothing,
> pour
> > > être à peu près certain que la feuille soit déchargée


IMMEDIATEMNT
> (les
> > > fonctionnements de Windows sont parfois asynchrones... bon


courage).
> > >
> > > Un test : depuis une autre feuille, fait un Unload et un Set à
> nothing
> > > de la feuille concernée. Cela donnera déjà une piste...
> > >
> > > @+
> > >
> > > Christian
> > >
> > >
> > >
> > > "Christophe" a écrit dans le message de
> > > news:blbd3t$fp7$
> > > > ??
> > > > Si je ferme la fenetre fille avec le bouton de fermeture (x)


en
> haut à
> > > > droite, la fenetre est fermée non ?
> > > > l'evenement unload de la feuille se produit
> > > >
> > > > Christophe Vergon
> > > >
> > > > "Christian Hugoud - Xtrem7" a écrit dans


le
> > > message de
> > > > news: blbcqa$vea$
> > > > > Est-tu certain que la feuille soit réellement déchargée ?
> > > > >
> > > > > 1) unload MyForm
> > > > > 2) set MyForm = nothing
> > > > >
> > > > > Christian
> > > > >
> > > > >
> > > > > "Christophe" a écrit dans le message de
> > > > > news:blbb0o$d8l$
> > > > > > Bonjour,
> > > > > >
> > > > > > voilà j'ai une MDIform, feuille1 est une mdifille.
> > > > > >
> > > > > > Dans feuille1 je declare:
> > > > > >
> > > > > > private lp() as long
> > > > > >
> > > > > > j'affecte une dimension puis des valeurs à lp() dans le


code
> de
> > > > > feuille1
> > > > > > ex: lp(1) , lp(0)=1, lp(1)=2
> > > > > >
> > > > > > je ferme la fenetre
> > > > > >
> > > > > > je reouvre la fenetre la valeur de lp est conservée.
> > > > > > Pourquoi?
> > > > > >
> > > > > > Christophe Vergon
> > > > > >
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>