Ce sujet est résolu.
12 | |||||
Auteur | Messages | ||||
---|---|---|---|---|---|
valaquarus | #1 Posté le 23/5/2021 à 15:31:15 | ||||
-- Unus Ex Altera -- | Bonjour à tous, pour faire suite à mon dernier poste sur le trayIon, je veux reparler de la clôture des projets une fois lancés. Quelles différences faites vous entre Me.Close et Form_Close? Ce dernier est ouvert par l'IDE quand on a besoin de faire "des choses" (honorables) avant la fermeture du programme, celles-ci sont exécutées quand on clique sur la croix rouge (ou autre, à droite ou ailleurs) du formulaire principal. quand on créé un menu pour quitter dans ce même formulaire, du style :
si on utilise Me.close dans ce menu le même travail est fait par le programme et la clôture semble complète (la mémoire est libérée). Par contre si on commente Me.close et décommente Form_Close
Ma question est qu'est ce qui est fait par l'un qui n'est pas fait par l'autre? Philippe Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5 | ||||
vuott | #2 Posté le 23/5/2021 à 16:56:08 | ||||
Ne cedere ineluctabili possimus | Comme on le sait, ".Close ()" est une Méthode, tandis que "_Close ()" est un Événement. Si je lance ce code:
j'obtiens l'erreur suivante: Identificateur inconnu: Form_Close « Vita non suavis esse potest, nec Mors amara. » | ||||
valaquarus | #3 Posté le 23/5/2021 à 17:08:11 | ||||
-- Unus Ex Altera -- | Bonsoir Vuott, merci pour ce rappel simple qui va me permettre d'avancer par comparaison entre les deux choses.
Philippe Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5 | ||||
vuott | #4 Posté le 23/5/2021 à 17:35:23 | ||||
Ne cedere ineluctabili possimus | Buonasera valaquarus, dans les forums et dans la Mailing List officielle de Gambas, les programmeurs proposent parfois, ou soumettent à l'attention, la commande Quit à la place de "Me.Close ()". Mais, comme cela a été répété à maintes reprises, dans le cas d'un programme graphique, il n'est pas conseillé d'utiliser la commande "Quitter": "Me.Close ()" est recommandé. « Vita non suavis esse potest, nec Mors amara. » | ||||
valaquarus | #5 Posté le 23/5/2021 à 18:14:50 | ||||
-- Unus Ex Altera -- | Buonasera Vuott, je suis d'acord sur l'utilisation de Quit qui est soit brutal soit incomplète en termes de libération de la mémoire, dans le cas d'une application graphique. Ma question n'était pas ésotérique mais liée à l'observation sur ma machine uniquement, je le concède. Il est souvent des cas où la libération de la mémoire n'est pas immédiate voire pas faite du tout, il suffit de le contrôler avec un gestionnaire de process comme Ksysguard malgré la bonne utilisation de Me.Close. Philippe Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5 | ||||
vuott | #6 Posté le 23/5/2021 à 20:55:43 | ||||
Ne cedere ineluctabili possimus | Bonsoir valaquarus, je ne sais pas pourquoi ça t’arrive. Il faut savoir quelles ressources, et en particulier quelles instances d’Objets, sont appelées et créées par votre programme. Peut-être que certaines ressources devraient être détruites de manière appropriée et individuellement. « Vita non suavis esse potest, nec Mors amara. » | ||||
valaquarus | #7 Posté le 24/5/2021 à 08:11:31 | ||||
-- Unus Ex Altera -- | Bonjour Vuott, oui c'est la "solution" même si ce n'en n'est pas une "normale" à mes yeux car je considère que le langage devrait être capable seul de libérer la mémoire quand la demande est faite ; s'il faut développer une routine pour contrôler que tout a été détruit avant que de fermer je ne saisi pas l'intérêt de Me.close. Philippe Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5 | ||||
vuott | #8 Posté le 24/5/2021 à 12:32:06 | ||||
Ne cedere ineluctabili possimus | Evidemment "Me.Close()" suppose que chaque ressource, qui doit être explicitement supprimée via le code, a été supprimée. « Vita non suavis esse potest, nec Mors amara. » | ||||
valaquarus | #9 Posté le 24/5/2021 à 13:33:21 | ||||
-- Unus Ex Altera -- | Merci Vuott, et la question du siècle est : comment récupérer les informations sur les ressources non libérées pour générer la fameuse routine en amont de la clôture? Philippe Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5 | ||||
valaquarus | #10 Posté le 26/5/2021 à 21:52:41 | ||||
-- Unus Ex Altera -- | Bonsoir, il semble que les ressources les plus "sensibles" à supprimer par le code soient les tableaux et les collections qui ne sont pas "dégagés" par Me.Close(), en fait tout ce qui a été généré par un New donc instancié par le code. Mais cela ne m'explique pas la référence circulaire, c'est à dire le truc qui s'appelle lui même pendant la fermeture. Philippe Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5 | ||||
valaquarus | #11 Posté le 31/5/2021 à 21:09:22 | ||||
-- Unus Ex Altera -- | Bonsoir à tous, peut on m'indiquer comment vider les enfants d'un tabstrip avant de pouvoir le détruire? j'ai fait ça :
Philippe Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5 | ||||
vuott | #12 Posté le 1/6/2021 à 11:42:00 | ||||
Ne cedere ineluctabili possimus | Peut-être que cette page peut vous aider: Eliminare una scheda da una TabStrip « Vita non suavis esse potest, nec Mors amara. » | ||||
valaquarus | #13 Posté le 1/6/2021 à 20:52:06 | ||||
-- Unus Ex Altera -- | Bonsoir Vuott, merci pour la page. Voici ce que j'ai fait :
Et voici l'erreur que j'obtiens que je ne comprend pas :
Philippe Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5 | ||||
vuott | #14 Posté le 1/6/2021 à 23:21:14 | ||||
Ne cedere ineluctabili possimus | Il n'est pas possible d'avoir un TabStrip sans onglets. En fait ce code:
donne une erreur. Par conséquent, en gardant l'utilisation d'une boucle autre que "FOR", comme vous l'avez fait, le code peut être modifié comme suit:
« Vita non suavis esse potest, nec Mors amara. » | ||||
valaquarus | #15 Posté le 2/6/2021 à 15:20:53 | ||||
-- Unus Ex Altera -- | Bonjour Vuott, et merci, encore, je n'avais pas réfléchis à cette incongruité que d'avoir un tabstrip sans onglet. Je me rapproche donc maintenant de la sortie, je veux dire par là, de la fin de mon nettoyage de fermeture. Philippe Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5 | ||||
12 |