cs_dpujol
Messages postés46Date d'inscriptionjeudi 31 juillet 2003StatutMembreDernière intervention14 juin 2009
-
4 mars 2007 à 17:10
cs_dpujol
Messages postés46Date d'inscriptionjeudi 31 juillet 2003StatutMembreDernière intervention14 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.
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 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 !
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 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).
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_dpujol
Messages postés46Date d'inscriptionjeudi 31 juillet 2003StatutMembreDernière intervention14 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.
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 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"
<!--
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 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 ....
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 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.
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 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
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 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"
<!--
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 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
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 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 ?
cs_dpujol
Messages postés46Date d'inscriptionjeudi 31 juillet 2003StatutMembreDernière intervention14 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)
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 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 #
cs_dpujol
Messages postés46Date d'inscriptionjeudi 31 juillet 2003StatutMembreDernière intervention14 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.