07-23-2014 05:51 AM - modifié 07-23-2014 05:52 AM
Je reviens avec une question qui me hante depuis bien longtemps.
Quelle est l'utilité du Variant ? (non, ce n'est pas un troll)
Je programme en LV depuis 3 ans ... et je n'ai jamais utilisé un variant.
cela n'explique rien ... mais cela accentue mon interrogation
réponse que je lis un peu partout :
c'est un "conteneur" dans lequel tu places ce que tu veux, indépendamment du type ... donc très pratique !
ouadji:
ok ... je place ce que je veux dans un variant.
Mais ... pour pouvoir "en sortie" exploiter la donnée placée dans ce variant, je dois en connaître le type (fonction variant to data)
Dès lors ... pourquoi ne pas "passer" directement le type dont question.
Pourquoi transiter par "une boîte noire" ... avec laquelle je dois de toute façon en "décoder" la sortie (variant to data).
Dans mon code, je ne pourrai jamais placer dans un même variant (par exemple contenu dans un cluster) ... une fois un U32 et une fois un String
et plus loin dans mon code ... utiliser la sortie de ce variant (variant to data) ... une fois en lui cablant un type U32, et une autre fois en lui cablant un type String.
Donc ... quel est l'utilité de passer par un variant ... alors que le ou les types de données que l'on peut en extraire ... sont formatés en amont du code.
Je me doute qu'il me manque un maillon ... et que je passe à côté de l'essentiel,
si un d'entre vous peut "me débloquer" à ce sujet, je suis preneur.
Peut-être ceci pourrait-il m'aider :
un exemple de code (minimum, le plus simple possible) .... ou l'utilisation d'un variant est obligatoire / indispensable.
Un code minimum impossible à réaliser sans l'utilisation d'un variant.
merci à tous.
Résolu ! Accéder à la solution.
le 07-23-2014 06:30 AM
Bonjour Ouaji,
Ton raisonnement est bon, mais le variant a une utilité surtout quand tu codes car à mon sens il te permet de faire de la programmation "polymorphe" sans VI polymorphe. D'où un gain de temps à l'édition et à la modification. C'est à dire que tu as ton connecteur d'entrée de VI que tu n'as plus besoin d'adapter en permanence. Tu adaptes juste le contenu de ton vi suivant le cas utilisé.
Un très bon exemple de ce que j'avance est de jeter un coup d'oeil sur le modèle de création de projet LabVIEW (2013) en choisissant le modèle "gestionnaire de messages".
Cette structure te permet de faire passer un message et des données "polymorphes" de la boucle de gestion d'évènements à la boucle consommatrice. Le VI non polymporphe de dépliage de la file d'attente a donc toute son importance.
Si d'autres personnes ont une autre utilité je suis preneur également 🙂
le 07-23-2014 07:15 AM
je reviendrai dans une futur vidéo sur l'utilisation des variant que décrit TeamJP34.
en attendant il y a une autre utilisation que j'adore, c'est la possibilité d'utiliser les "variant attribut", j'essaiera de prendre le temps de faire une petite vidéo ce soir là dessus, enm attendant je vous renvoie vers ça : Using Variant Attributes for High-Performance Lookup Tables in LabVIEW qui se trouve dans la section LabVIEW Development Best Practices de community.ni.com
We have two ears and one mouth so that we can listen twice as much as we speak.
Epictetus
le 07-23-2014 09:32 AM
les différentes réponses (merci à tous) semblent conforter une "impression" que j'avais ...
à savoir ...
L'utilité du Variant est essentiellement une "facilité de développement"
mais semble (je dis bien "semble") n'avoir que peu d'utilité (aucune?) au niveau du "code pur".
je dirais même plus ... il facilite peut-être le développement (mise au point) ... mais complique le code lui-même.
maintenant ....
TiTou nous parle des "variant attribut".
Ces "variant attribut" auraient-ils une utilité "pur code" ?
le 07-23-2014 09:48 AM
je ne suis pas sûr de bien comprendre ce que tu veux dire pas "une utilité "pur code""...
dans un tableau, des éléments de même type sont référencés par indice, dans un variant les attributs sont référencés par nom et peuvent avoir différent type.
Je sais pas si c'est "pur code", mais en tout cas c'est bien pratique quand on développe, c'est très souple et surtout performant.
We have two ears and one mouth so that we can listen twice as much as we speak.
Epictetus
le 07-23-2014 10:59 AM
"pur code"
aurais-tu un exemple d'implémentation (une quelconque fonction a réaliser)
qu'il est impossible de coder sans utiliser un variant.
... un code ou l'utilisation d'un variant est indispensable. (sans variant ... c'est le cul de sac)
PS:
Le variant n'est-il pas "un outil" qui facilite la mise au point. (soit la "construction" du code)
Une fois cette mise au point terminée ... l'utilisation du variant peut-être supprimée.
et avec ce "PS" on revient sur ma première question ...
existerait-il un code qu'il est impossible de "faire tourner" sans l'utilisation d'un variant ?
(ce qui donnerait alors une réelle utilité "pur code" au variant .... et non une simple facilité lors de l'implémentation / mise au point)
le 07-23-2014 01:04 PM
dans ce cas arrêtons d'utiliser LabVIEW et mettons nous à l'assembleur!
je ne suis pas un puriste, pour moi le variant est un type de donnée à ma disposition dans LabVIEW, j'ai des primitives qui permettent de faire variant to data et data to variant, donc si l'utilisation de variant me permet de développer mon appli plus rapidement, ça me suffit.
je ne sais pas trop comment répondre à ta quesion car je ne me la pose jamais... est ce que je pourrais remplacer les variants par autre chose? pourquoi même essayer si je développe mon appli plus vite avec?
Ce que je te propose c'est de jeter un oeil aux fonctions "read section cluster" et "write section cluster" de package OpenG Variant Configuration File?
We have two ears and one mouth so that we can listen twice as much as we speak.
Epictetus
le 07-23-2014 01:19 PM
Je respecte totalement ta réponse TiTou ... tu vois "cela" sous un angle différent, tout simplement.
Il est vrai que personnellement, je développe uniquement pour mon propre plaisir
je peux donc me permettre le "luxe" d'être puriste ... et de me poser parfois des questions du type "électron libre"
Si les variants te permettent de développer "plus vite" ... c'est une excellente raison de les utiliser (je te comprends à 100%)
Pour "le reste" .. je lance une petite "provocation sympathique" à tous
à celui qui me montrera un bout de code qu'il est impossible de réaliser autrement qu'en utilisant un variant.
Ce jour là ... je le jure ... je change d'avis à propos des variants
merci à toi TiTou.
le 07-23-2014 03:36 PM
Ouadji, as tu regardé le code que j'ai cité plus haut?
We have two ears and one mouth so that we can listen twice as much as we speak.
Epictetus
le 07-23-2014 04:05 PM
J'ai ouvert le JKI VI Manager ...
effectivement ... il y a un package "Variant Configuration File"
Le soucis est que je dois installer le package ... "juste" pour voir le code.
C'est une manip que je n'aime pas faire "inutilement"
(installer et ensuite devoir désinstaller ... uniquement pour jeter un coup d'oeil au code ... bof !)
J'évite (si possible) de prendre le risque (inutile) de créer un éventuel soucis ... sur mon installation de LV qui tourne tip-top.
Je reconnais qu'il y a là un éventuel et léger trouble du comportement de ma part ... j'assume !
Donc ... (s'il te plaît) ... si tu as "sous la main" un vi de ce package .... que je puisse "voir" directement ... ce serait le top.