Vb6 et vidage variable

cs_dpujol Messages postés 46 Date d'inscription jeudi 31 juillet 2003 Statut Membre Dernière intervention 14 juin 2009 - 4 mars 2007 à 17:10
cs_dpujol Messages postés 46 Date d'inscription jeudi 31 juillet 2003 Statut Membre Dernière intervention 14 juin 2009 - 5 mars 2007 à 20:58
Bonjour,
comment peut on faire pour vider toutes les variables d'une appli simplement (sans killer l'appli). A l'epoque sous basic classique il y'avait clear mais sous VB6 y'a t'il une astuce sans devoir vider chaque variable 1 par une.

merci

Puje

15 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
4 mars 2007 à 18:24
Non je pense pas !
0
cs_dpujol Messages postés 46 Date d'inscription jeudi 31 juillet 2003 Statut Membre Dernière intervention 14 juin 2009
4 mars 2007 à 20:48
ok merci.
c'est bete ça, cela manque vraiment une telle fonction !

Puje
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
4 mars 2007 à 21:08
Pas vraiment : autant en BASIC, c'était simple à implémenter (je parle des concepteurs du langage, quoique !), autant en VB c'est quasi-impossible : avec la prog objet, ce serait du gaspillage de mémoire de stocker l'état initial de chaque objet afin de pouvoir faire un reset, sans compter tout les verrous sur les fichiers/base de données, connexions à des serveurs, etc.

Bref, c'est à toi seul de faire une procédure de reset, ca m'étonnerai très fort que vb puisse le gérer tout seul !
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
4 mars 2007 à 21:08
Bonsoir dpujol,

il y a sans doute une explication...

- Si ton appli utilise des variables, c'est qu'elles ont leur utilité. (pourquoi les créer, si non ?)
- "zigouiller" une variable, dans ces conditions, n'aurait d'intérêt que celui de libérer un peu la mémoire...(d'une variable devenue soudain  inutile ?)
- il n'est nul besoin, si la présence de cette variable est toujours utile, de la "zigouiller" pour lui attribuer une nouvelle valeur
- "zigouiller" la totalité des variables présentes poserait une question d'essence première : tin appli pourrait-elle tourner encore sans la moindre de ces variables ?
-si seules quelques-unes de ces variables n'ont plus de raison d'être, il serait plus fastidieux de "zigouiller" toutes les variables et de réinitialiser  celles qui demeurent utiles , que de ne "zigouiller" que celles devenues inutiles (si vraiment ce "zigouillage" libère de la mémoire de façon significative).
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_dpujol Messages postés 46 Date d'inscription jeudi 31 juillet 2003 Statut Membre Dernière intervention 14 juin 2009
4 mars 2007 à 21:48
merci pour ces réponses.
je m'explique un peu, mon appli contient plus d'un millier de variable (logiciel complet de topographie de plus de 2Mo de code ).
le truc de "zigouiller" les variables est pour le  menu nouveau document. Dés qu'on clique sur  nouveau docyument, il faut que toutes les variables string, nombre, booléen, reprennent leurs valeurs initiales (divers menu, tableau ....).
cet astuce est bete mais sil elle existe cela me simpliefireais la vie.

Merci a tous

Puje
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
4 mars 2007 à 21:56
Salut,

DarkSidious,

je pense que ça doit tout de même être faisable de récupérer les noms des variables (simple supposition) car j'utilise MZTools (et je pense que toi aussi) et dans les stats, il te donne les variables non utilisés.
C'est qu'il doit récupérer les infos qque part. Reste à savoir comment...

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
4 mars 2007 à 22:10
L'expression qui m'interoelle est celle-ci :

 " reprennent leurs valeurs initiales "

Comment et dans quel événement ont été déterminées ces valeurs "unitiales" ?

Si cette initialisation a été faite dans un événement, il suffit de rappeler le dit événement.


- Maintenant : "un millier de varuables" me donne raisonnablement à penser que nombre d'entre elles pourraient astucieusement  être mises en tableau dynamique ....
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
4 mars 2007 à 22:11
c'est pas aussi simple mortalino : un reset ne veux pas dire simplement supprimer une variable, cela veut dire remettre les variables à leur état initial, et là, avec les objets composés, c'est le drame :
Ta un objet X qui contient un objet Y qui lui même contient un objet Z, le tout dans une collection d'objet X, et l'objet Z partagé entre toutes les instances (non pas une copie de l'objet, mais une copie de sa référence) !

Comment veut-tu pouvoir réinitialiser tout cà ?

Je pense que MZTools analyse tout simplement les variables locales de chaque procédure (pas compliqué à récupèrer) ainsi que les paramètres des fonctions, mais c'est tout. Il suffit juste de faire un :
public sub toto()
Dim titi as string
titi = ""
end sub

Et là MZtools ne te dit rien sur la variable titi qui pourtant sert absolument à rien !

Non c'est plus compliqué que cà car avec les objets, tu as des références dessus les objets (un pointeur C en gros), et là c'est très compliqué de suivre les instances d'une classe.
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
4 mars 2007 à 22:12
Un milier de variable, jacques, pour un code qui pèse 2 Mo (pur code, pas les interfaces ou images !), c'est possible sans erreurs de conception (bien que ca fasse tout de même beaucoup de variable), en tout cas, ca ne m'interpelle pas ;p
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
4 mars 2007 à 22:17
Ok, merci pour ces précisions, je n'étais pas allé aussi loin 
Je pense que tu as raisons concernant MZTools, il doit juste vérifier si les variables déclarées sont présentes dans le code.
Et effectivement, revenir à l'état initial sur l'exemple donnée avec les instances semble complexe.

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
4 mars 2007 à 22:25
Bonsoir, Nicolas,

Le nombre en lui-même est loin de m'impressionner... (il n'est arrivé d'aller bien au delà, notamment pour des statistiques démographiques).

Je persiste toutefois à dire que je serais étonné de ce qu'une réflexion bien conduite ne permette pas le regroupement en tableaux de nombre de ces variables
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
4 mars 2007 à 22:36
J'essaie de comprendre ce que fait ton appli lorsque tu fais "Nouveau document", mais je saisis mal le problème, je pense...
Que se passe-t-il avec les variables du nouveau document ?
Sont-elles initialisées avec les valeurs qui sont dans le document principal ?
Est-ce que tu utilises des classes ?

MPi
0
cs_dpujol Messages postés 46 Date d'inscription jeudi 31 juillet 2003 Statut Membre Dernière intervention 14 juin 2009
4 mars 2007 à 22:58
Mon programme de topographie est un programme de dessin 2D et 3D de topographie souterraine.
il est constituée de diverses FORM.
IL fonctionne comme suivant :
premiere Form : grille de saisie de 12 colonnes sur 15000 lignes. ici sont entrées les valeurs sur le terrain. Cette form regroupe aussi tous les parametres du logiciel (mode de tracés, divers outils)..
un bouton de calcul permet de passer sur une autre Form qui contient sensiblement la meme grille mais les valeurs recalculés en fonction de l'échelle saisie, de la déclainaison magnétique. sur cette 2eme form il est ensuite possible de dessinner en 
2D et 3D les topographies des cavités.
Le hic c'est qu'apres une séquence de manips je me retrouve mainetant avec un bug lorsque je charge un autre documents, il y'a des formes 3D qui n'apparaissent plus comme si une variable de l'ancien document était encore existante, d'aou  ma question initiale de pouvoir intialiser toutes les variables a chaque chargement de documents (sans killer l'application).
je me suis apercu de ce bug car j'ai aujourd'hui une mise a jour du programme permettant le dessin 3 de plusieurs cavités d'un massif composée avec une surface.
Vous pouvez avoir (pour ceux qui veulent)  un apercu et telecharger le logiciel sur wwwdotspeleologiedotfreedotfr (remplacez les dots par des points hein). le logiciel est fourni avec des exemples. le logiciel en téléchargement est l'avant drniere version qui ne comporte pas les mises ajours du multi caité 3D)
(section D.P.Topo)

merci beaucoup
 
Puje
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
5 mars 2007 à 12:03
Pour en revenir au problème, si des variables étaient à détruires, seule des variables globales sont destructibles.

Toutes variables locales à une procédure est automatiquement détruite à la sortie de la procédure, exception faite des variables déclarées statiques, mais dans ce cas c'est au développeur à réinitialiser explicitement sa variable.

dpujol, je ne pense pas que tu ais 2000 variables globales. Si c'est ton cas, je ne saurais que trop te conseiller de remmettre à plat la philososhie de ton programme et d'en revoir urgemment la conception.

Les variables globales doivent etre limitées au maximum et tout doit etre fait normalement pour choisir une solution alternative à l'utilisation des variabes globales. Ces dernières ne doivent etre utilisées que lorsqu'il n'y a vraiment pas d'autres possibilités

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
cs_dpujol Messages postés 46 Date d'inscription jeudi 31 juillet 2003 Statut Membre Dernière intervention 14 juin 2009
5 mars 2007 à 20:58
hello et merci.
je pense avoir trouver mon probleme.
C'est plutot une liste opengl qui me foutrait le bordel car des que j'enleve cette liste tout fonctionne et si je la remet elle merde.  il faut que j'etudie ce probleme plus en profondeur.

Merci
Puje
0
Rejoignez-nous