Discussions au sujet de NI LabVIEW

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

Conditional Disable Structure (comportement)

Une structure "Conditional Disable" accepte une condition comportant un Symbole qui ... n'existe plus.

 

Ce symbole a été créé, il "existait" ... mais il a été supprimé.

 

Une fois supprimé, les structures qui comportaient ce symbole dans leur condition ne génère aucun "code broken"

 

..... et labVIEW se base alors sur la "condition par défaut".

 

 

oui ... c'était une option (bof) ... mais est-ce la bonne ?  trouvez-vous ce comportement " très sain " ?

 

 

Pour le moins ... générateur de pièges possibles à l'infini pour le développeur ... et surtout si le projet est développé en équipe !

 

Un Symbole qui n'existe plus devrait placer "broken" tout code ou VI le comportant.

 

L'option "par défaut" est valable quand le symbole ne peut pas être mis en concordance avec une valeur valide.

 

Mais ici ... c'est le symbole lui-même qui n'existe pas (plus) ... et LV continue de le "gérer" comme s'il existait.

 

votre avis ?

Message 1 sur 7
4 268 Visites

je suis comme toi j'aime pas!

en plus c'est la merde pour retrouver les structures qui utilisent le symbol en question. Donc le supprimer permetterait de le trouver.

Donc d'accord avec toi, même si sur le principe le cas par défaut permet au code de fonctionner.

A+

banniere Luc Livre NXG Champion.png

Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion

MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group

0 Compliments
Message 2 sur 7
4 261 Visites

@Luc :

 

en plus c'est la merde pour retrouver les structures qui utilisent le symbol en question

 

Find and Replace .... je viens de tester, ça fonctionne.

 

encore faut-il se souvenir du nom précis du symbol .... qu'un autre a supprimeé il y a 8 jours et qui bien entendu est en congé.  Smiley surpris

 

ceci dit :

 

même si sur le principe le cas par défaut permet au code de fonctionner.

 

Oui, dans la même idée ... pourquoi ne pas prendre des "choix par défaut partout" ... comme ça on aura jamais de broken.

 

Perso ... je suis totalement réfractaire au comportement de LV en pareil cas (et au choix des développeurs de LV)

 

Il est anormal qu'un code soit ok alors qu'il contient un symbole qui n'existe plus.

 

Une structure "conditional disable" qui contient un symbole qui n'existe pas devrait être broken.

0 Compliments
Message 3 sur 7
4 253 Visites

Je suis très, très, très d'accord.

 

En regardant de mon point de vue plus proche du produit, un code brisé est un code qui ne passe pas au compilateur. Les structures à conditions désactivées ne reposent au final que sur des chaines de caractère, et une chaîne ne peut pas faire échouer une compilation comme ça... Pas si simple 😉

Eric M. - Senior Software Engineer
Certified LabVIEW Architect - Certified LabVIEW Embedded Systems Developer - Certified LabWindows™/CVI Developer
Neosoft Technologies inc.

0 Compliments
Message 4 sur 7
4 250 Visites

@Eric :

 

heuu ..

 

suffirait de comparer la dite chaine à l'ensemble des chaines définissant les symboles déclarés,

 

et de s'apercevoir que la chaine, donc le symbole, n'existe pas.

 

Quand on fait un "Get Value" (noeud de méthode sur la Ref d'un VI) avec un nom de Contrôle qui n'existe pas ... le code génère une erreur.

 

Il a donc bien fallu qu'a un moment donnée labview fasse "le tour" des Controles et de leur nom ... et se rende compte que le dit nom est inconnu.

 

Le Noeud "Get Value" échoue car une "entrée" est inconnue.

 

Semblable comportement est tout à fait envisageable avec une structure "conditional disable" ....

 

en ce ... que le nom d'un symbole est une entrée de la structure.

 

 

0 Compliments
Message 5 sur 7
4 247 Visites

Les analyses sémantiques ou syntaxiques d'une compilation ne s'occupent pas des valeurs associées à une variable quelle qu'elle soit... Il faut différencier une erreur d'exécution et une erreur de compilation.

 

A+

--Eric

Eric M. - Senior Software Engineer
Certified LabVIEW Architect - Certified LabVIEW Embedded Systems Developer - Certified LabWindows™/CVI Developer
Neosoft Technologies inc.

Message 6 sur 7
4 232 Visites

Il faut différencier une erreur d'exécution et une erreur de compilation.

 

ok Eric ... je comprends parfaitement la différence entre les deux.

 

Je comprends que le compilateur ne puisse pas gérer cette histoire de symbole non existant. (c'est logique)

 

Ce "cas" ... est un cas particulier ... qui ne s'intègre ni dans la gestion des erreurs par le compilateur,

 

ni dans la structure globale de gestion des erreurs lors de l'exécution.

 

Ce choix ... (de prendre le code par défaut quand le symbole n'existe pas) ... me semble, lui aussi, être un choix par défaut"  😉

 

Je ne suis pas persuadé que les Développeurs de LV eux-mêmes trouvent se comportement parfaitement approprié.

 

Pour gérer la chose "autrement", il aurait peut être fallu créer, ce que je nommerai ... une autre classe d'erreurs

 

et ce, " u n i q u e m e n t " pour cette structure "conditional disable".

 

Il me semble que l'origine de ce choix est dans cette direction.

 

 

 

 

0 Compliments
Message 7 sur 7
4 222 Visites