J'utilise Delphi 2007. Parfois, les propriétés liées aux composants sont perdues. Il s'agit généralement de propriétés d'action et de fichiers lookupdatasets. J'ai quelques fois eu quelques corrections de bugs d'urgence et envoyé une version aux clients avec un résultat quelque peu catastrophique à cause de cela :-) Tout le monde sait un moyen de vérifier que les propriétés qui sont censées être définies sont vraiment définies, ou d'une manière pour empêcher cela de se produire?Comment puis-je vérifier que les propriétés liées aux composants ne sont pas "perdues"?
Répondre
Vous avez reçu plusieurs bonnes réponses sur la façon de détecter quand cela se produit (voté en haut). Mais une façon d'empêcher cela (parfois) est de s'assurer que vous avez ajouté toutes les unités référencées à votre RMR. Si vous ouvrez un formulaire, par exemple, qui contient des composants qui référencent d'autres composants sur un module de données et que ce module de données n'a pas été ajouté au projet DPR /, il est presque certain que l'IDE supprimera ces références. supprime les références qu'il ne peut pas déterminer sont valides. Si, en revanche, le module de données est dans le DPR, alors l'IDE sera capable de le trouver, et il est moins probable qu'il supprime les références en premier lieu
Malheureusement, il arrive encore de temps en temps temps, de sorte que vous devez toujours prendre les mesures de précaution détaillées dans les autres réponses. Mais cela améliorera les choses, si vous ne le faites pas déjà.
Vous pouvez affecter de telles valeurs dans le code, évidemment.
Plus important encore, vous devez différencier chaque fichier avant de passer à sourcecontrol. Toujours.
Assurez-vous que vos fichiers dfm sont de type texte et non binaire. Ensuite, il sera facile de voir les changements indésirables avant l'enregistrement/validation.
Différant tout a arrêté beaucoup de gaffes potentiels pour moi.
Un système de construction et de test automatique vous donnera également une certaine confiance dans ce que vous livrez.
Vous voulez un moyen de vérifier si les valeurs sont définies correctement. Eh bien, vous pouvez utiliser des tests unitaires pour cela. Il suffit d'initier un formulaire, comparer les propriétés et fait.
La comparaison des dfm est également une bonne méthode mais elle ne prend pas en compte les changements dus aux changements de valeurs par défaut ou aux modifications du code.
Créer un projet de test dunit. Exécuter le test avant la publication. Sonner toutes les cloches lorsque le test échoue.
Lorsque vous ajoutez un formulaire, un module de données ou un cadre à un projet, l'EDI insère un petit commentaire "tag" après le nom de l'unité dans le fichier dpr. D'après mon expérience, si pour quelque raison que ce soit cette étiquette n'est pas présente, l'IDE est plus enclin à perdre des références de composants inter-modules. Je soutiens de tout coeur l'idée de toujours voir les différences avant chaque validation au contrôle de version, si vous utilisez tel chose.
Je déteste dire cela, mais le contrôle de code source peut aider dans ces situations. Même avec une correction de bogue d'urgence, vous devriez tout vérifier dans un dépôt de code source (Perforce est mon favori personnel). Dans une petite correction, vous pouvez voir par quels fichiers ont changé si vous avez des changements que vous n'attendez pas.
- 1. Comment définir dynamiquement quelles propriétés sont liées à un DataGridView?
- 2. Pourquoi les propriétés ne sont pas déclarables dans les interfaces
- 3. vérifier si les composants microsoft sont présents ou non
- 4. WPF: Afficher UserControl avant que toutes les propriétés liées ne soient chargées
- 5. ASP.NET MVC 2 Comment sont les urls/routes, les vues liées aux contrôleurs?
- 6. JSF, changer les photos liées aux liens
- 7. Localisation - comment vérifier que Filename1 et Filename2 sont les mêmes
- 8. Les données DesignTime ne s'affichent pas dans Blend lorsqu'elles sont liées à CollectionViewSource
- 9. GetLocalValueEnumerator() Ne pas retourner toutes les propriétés
- 10. Comment puis-je accéder aux propriétés d'un objet javascript si je ne connais pas les noms?
- 11. Méthode de classe ne peut pas accéder aux propriétés
- 12. Comment vérifier les ressources externes sont disponibles
- 13. Extensibilité Visual Studio (complément): Comment accéder aux propriétés liées à Silverlight?
- 14. propriétés Bind de forme et les propriétés attachées aux propriétés
- 15. en utilisant les composants Swing dans javafx s'ils ne sont pas dans la palette NetBeans javafx
- 16. Toutes les propriétés Entity ne sont pas chargées par EntityDataSource utilisé par FormView
- 17. Les sessions ColdFusion ne sont pas dépassées
- 18. Est-ce que toutes les vues liées à un contrôleur de vues sont une mauvaise pratique?
- 19. NUnit - Affirmer que toutes les propriétés sont identiques?
- 20. SQL plaint que les outils de gestion ne sont pas installés, mais ils sont
- 21. ListCellRenderer ne déclenche pas d'événements sur les composants enfants
- 22. Les pièces jointes ne sont pas jointes
- 23. Les propriétés de la classe C# ne sont pas visibles dans Visual Basic 6.0
- 24. Les événements Global.asax ne sont pas déclenchés
- 25. Les liens sIFR ne sont pas visibles
- 26. Les propriétés «lourdes» ont-elles un poids, même si elles ne sont pas remplies?
- 27. LoadContent ne fonctionne pas dans mes composants
- 28. Asp.net GridView - comment accéder à la source de données avant que les données ne soient liées?
- 29. Comment trouver les fonctions qui ne sont pas exécutées?
- 30. Les éléments ListView ne sont pas affichés dans les colonnes GridView
Les problèmes que j'ai rencontrés étaient généralement des liens vers d'autres formulaires qui ne sont pas ouverts dans l'EDI lorsqu'un formulaire est sauvegardé. J'ai utilisé une combinaison de tests de code et de système de construction pour m'assurer que cela fonctionne, et j'affirme me dire au moment du développement. – mj2008
Une chose semblable m'arrive lorsque j'utilise Delphi Project Groups pour likn Project Files ensemble. Je trouve que dès que j'utilise cela, les composants de base de données perdent leur connexion au DataModule sur lequel se trouve leur table. J'ai abandonné en utilisant des groupes de projet. –