6
votes

Est-il sécuritaire de supprimer la variable de formulaire créée par l'IDE?

J'ai une forme appelée MyPorm stockée dans une unité appelée unité unitéMyFrom. Bien sûr, Delphi a automatiquement ajouté ce code: xxx

mais j'ai supprimé la déclaration de var à partir de cette unité. Quelqu'un a dit que cela pourrait causer des problèmes avec l'IDE. Est-ce vrai? L'IDE nécessite-t-elle cette variable?


EDIT:

La MyForm n'est pas automatiquement créée. L'utilisateur crée ce formulaire à l'exécution.


0 commentaires

6 Réponses :


3
votes

Je dirais oui lorsque vous souhaitez créer un formulaire automatiquement, car vous devez transmettre cette variable à la méthode TAPLLICITY.CREATORM.


1 commentaires

Ou plus précisément, c'est ce que les IDE veulent faire lorsque vous ajoutez un formulaire aux formes autocrées. Si vous voulez le faire vous-même, vous pouvez mettre la variable partout où vous le souhaitez. Vous ne devriez pas trop utiliser l'autocréation de toute façon.



7
votes

Supprimer la ligne Application.creatreform (tmyform, MyForm); dans le fichier de projet .DPR et vous n'aurez aucun problème.

Si vous ne créez pas le formulaire automatiquement, vous n'aurez aucun problème


1 commentaires

@Altar: alors il n'y aura pas de problèmes



13
votes

Je n'utilise pas automatiquement créé et je n'utilise jamais de variables globales contenant des références de formulaire. Ça marche très bien.


6 commentaires

Merci pour la confirmation. Je fais la même chose. +1


+1. Je souhaite qu'il y ait une option à pas ajouter de nouveaux formulaires à la liste de création automatique automatiquement. Je souhaite qu'il y ait une option pour pas Créer ce problème gênant "var". Tant pis...


@COSMIN Il y a une option. Cela s'appelle "Créer automatiquement des formulaires et des modules de données". Il ne semble pas avoir d'effet !! De toute évidence, je ne fais pas bien ça, ni mal comprendre la documentation.


L'option que vous vous référez à empêcher le formulaire d'être créé automatiquement mais ne supprime pas la variable globale du formulaire.


Comment créez-vous la forme principale puis et faites-vous vous comporter comme tel? Appelant Application.Terminate dans l'événement OnClose ? Qu'en est-il de l'icône de la barre des tâches? Autres choses?


Il n'y a rien de beaucoup à faire. Appliquer Application.Creatreform Une seule fois, pour la forme principale. Quand il ferme, l'application aussi.



3
votes

Allez aux options du projet et assurez-vous que le formulaire n'est pas automatiquement créé. Ensuite, vous pouvez supprimer en toute sécurité la variable d'instance de formulaire. (Sinon, vous obtiendrez une erreur de compilateur.)


1 commentaires

Salut. Je ne crée pas automatiquement ce formulaire. +1



2
votes

Vous voudrez peut-être conserver cette ligne dans le utilise ou contenant la clause dans le fichier DPR: xxx

si vous ( ou l'IDE) supprime le {form1} -Commendment, alors votre formulaire n'apparaîtra pas dans la liste SHIFT + F12 uniquement dans le Ctrl + F12 -List.


9 commentaires

+1; J'ai vu tant de projets vis-à-vis (parce que les gens pensent qu'ils possèdent le fichier .dPR; vous ne le faites pas: l'EDD est propriétaire de la DPR, vous possédez les unités. Les gens collent toutes leurs conventions spéciales dans un "Mainnit").


@Jeen bien, je ne suis pas d'accord. L'IDE le vise. Je souhaite une inclusion conditionnelle d'unités dans mon projet (par exemple, basculer entre différents gestionnaires de mémoire, supporte différentes versions de Delphi). IDE vis cela en haut. J'ai besoin de meilleur contrôle sur la création et la destruction de formulaires que l'IDE fabriqué à la DPR permet et doit également travailler autour de certains bugs VCL en rapport avec cela.


Oui, j'ai toujours cette ligne dans le fichier DPR.


@David Il est très facile de différer cette décision à une autre unité et de garder toujours heureux le Delphi IDE. Vous pouvez détester que l'IDE possède le fichier .DPR, mais cela a été un fait depuis plus de 15 ans, vous auriez donc dû apprendre à vivre avec cela.


@Jeen êtes-vous au courant d'installer des gestionnaires de mémoire personnalisés?


@David Oui, la méthode ci-dessus correspond exactement à la manière dont je choisis si je veux utiliser FastMM ou non. Cette réponse explique comment. Il est facile d'étendre à d'autres responsables de la mémoire. Notez que, dans les jours de 16 bits, j'ai écrit Korsakov pour suivre des fuites de mémoire. J'ai besoin de creuser cela et de publier quelque part.


@Jeen je choisis entre plusieurs gestionnaires de mémoire. Je veux seulement que 1 d'entre eux soient référencés par mon fichier .DPR. Ainsi, j'ai besoin de compilation conditionnelle dans mes utilisations .DPR. L'IDE ne peut pas gérer cela. Cela ne me dérange vraiment pas trop parce que j'écris tout le reste du code moi-même, la manipulation du fichier .DPR est trivial. Ce serait mieux si l'IDE comprendrait mieux, mais comme ça ne le laissait pas, je ne le laisse pas interférer.


@David: Vous pouvez faire cela comme je le fais. J'ai conçu la façon de faire ça. Le pire cas (lorsque vous utilisez le gestionnaire de mémoire par défaut) est que vous obtenez une unité vide "MemoryManagerbootsTrapUnit" dans votre projet (car cette unité ne contient pas de code, car tous les chemins de compilation conditionnelle sont exclus). Donne-moi un exemple de projet par email et je vais le convertir pour vous. Si vous voulez, je peux écrire un bel article de blog dessus.


@Jeen en fait j'aime bien mon chemin. Je ne veux pas que les autres soient compilés dans mon projet. Je ne peux pas voir quel problème vous résolvez. Mais blog sur elle et je vais essayer de transporter dans les détails.



1
votes

Je les supprime et j'ai travaillé de cette façon pendant un certain temps (je ne fais pas autocréez ni n'utilise la variable pour la plupart des formes).


0 commentaires