05-15-2012 06:00 PM - modifié 05-15-2012 06:02 PM
Je suis en train de potasser les reférences et les Classes. (à cause de TiTou )
Une question qui me tracasse :
Quand je transforme une référence ... to more specific / to more generic
et que ensuite, sur cette référence "modifiée" ... je fais "Close Reference"
Ai-je bien "fermé" la référence de départ ???
Autrement dit :
Je prends un cas extrème.
Je prends la Référence d'un Controle/Tableau sur mon FP,
et je la transforme en une Référence totalement Generique
ensuite je fais "Close Reference" sur cette Ref Generique,
question : ai-je bien fermé la référence de mon Controle Tableau de départ ???
(Je pense que oui ... mais ...)
le 05-15-2012 11:39 PM
@ouadji wrote:
Quand je transforme une référence ... to more specific / to more generic
et que ensuite, sur cette référence "modifiée" ... je fais "Close Reference"
Ai-je bien "fermé" la référence de départ ???
Oui.
We have two ears and one mouth so that we can listen twice as much as we speak.
Epictetus
le 05-16-2012 01:55 AM
Tu peux faire un test avec des sondes, tu verras que ta ref a la même valeur avant ou après le changement.
C'est logique, ta référence est un pointeur, qui pointe vers le même objet, peut importe le niveau specific/generic.
05-16-2012 03:48 AM - modifié 05-16-2012 03:50 AM
Merci TiTou, merci Simon, me voila réconforté.
Il me semblait bien que "oui", mais comme LV est un langage de haut niveau
mes certitudes_assembleur sont bousculées, je préférais "demander".
J'ai une autre question (Oooh, l'emmerdeur )
Voici 2 Snippets
Celui du dessus ... c'est le code "utilisateur".
Celui du dessous ... c'est le sous-vi utilisé dans ce code utilisateur, soit le "carré vert" à gauche.(avec le -1)
J'essaye d'expliquer le problème ...
(Tout "fonctionne", mais pas comme je voudrais)
Ce code permet, pour un sous-VI, de retrouver des References d'un VI_Main (de Controles de son Front Panel).
En entrée : un Tableau de Labels <Label(s)>
En sortie : un Tableau de References <Array_Ref>
La Reference du VI_Main <Main_VI_Ref>
Le sous-VI qui utilise ce code ... manipule les References et ensuite ferme ces References. (merci TiTou )
Comme les References sont passées dans un Tableau ... j'utilise une boucle "FOR indexée" pour les fermer.
Mais ... problème .... La Reference "Main_VI_Ref" ne fait pas partie du Tableau, je dois la fermer "à part".
Impossible d'ajouter cette Ref au Tableau de sortie ... il y a conflit de Classe.
J'aimerais faire ceci :
Transformer "Main_VI_Ref" pour la rendre compatible avec mes autres "Control_Ref"
et pouvoir ainsi l'ajouter au Tableau de sortie (snippet du bas).
Mais ... à l'arrivée je dois aussi pouvoir la re-transformer et retrouver une VI_Reference (snippet du haut).
J'ai un peu tout essayé (to more x, to more y) ... je n'y arrive pas.
Je n'arrive pas à trouver une transformation qui rende compatible une VI_Ref avec une Control_Ref.
Pourquoi tout ceci ? ...
pour pouvoir au final (dans le snippet du haut) "fermer" toutes mes Ref avec une seule et unique boucle FOR.
(car toutes les ref seront dans le Tableau)
Ci-dessous le code du "carré vert"
Merci beaucoup pour votre aide et votre temps.
le 05-16-2012 03:56 AM
@ouadji wrote:
Tout "fonctionne", mais pas comme je voudrais
une belle rafarinade!
We have two ears and one mouth so that we can listen twice as much as we speak.
Epictetus
le 05-16-2012 03:59 AM
ouadji wrote:
Le sous-VI qui utilise ce code ... manipule les References et ensuite ferme ces References. (merci TiTou )
Tu oublies de fermer la ref du panel 😉
We have two ears and one mouth so that we can listen twice as much as we speak.
Epictetus
le 05-16-2012 04:07 AM
ouadji wrote:
Pourquoi tout ceci ? ...
pour pouvoir au final (dans le snippet du haut) "fermer" toutes mes Ref avec une seule et unique boucle FOR.
(car toutes les ref seront dans le Tableau)
Je ne pense pas que ce soit possible car les classes "Control" et "VI" n'ont pas d'ancêtre commun, donc tu ne peux pas faire de "to more generic class" qui te permettra de mettre tout ensemble dans un tableau 1D ; si tu insistes vraiment tu peux faire un tableau de cluster de tableau mais ce serait vraiment farfelu.
De plus, pas le peine de mettre ton "close ref" dans une boucle, il accepte les tabeaux 1D en entrée.
We have two ears and one mouth so that we can listen twice as much as we speak.
Epictetus
le 05-16-2012 05:24 AM
Tu oublies de fermer la ref du Front Panel
arrrg, il l'a vu ... Oeil de Lynx ... bien vu TiTou !
Close Reference accepte les 1D comme entrée
ça c'est le top, la grande classe
savais pas ... merci, n'oubierai pas.
Pour le reste ... ok ... pas possible alors.
Pas d'ancètre commun, ...je comprends, oui alors pas possible.
Pas possible de "remonter" et de passer de l'un à l'autre, ok.
le 05-16-2012 10:56 AM
Je reviens sur le "sujet".
à propos de cette remarque (justifiée) ... "tu as oublié de fermer la Ref du Front-Panel"
Fermer la Reference du FP, c'est fermer la Reference "B" ... c'est bien ça ?
Mais en "C" alors ? ...
J'ai 11 Controles sur mon FP, le Tableau de References en "C" comporte 11 Reférences.
Je n'utilise que 3 de ces References ... et après les avoir utilisées, je ferme ces 3 References.
Et les 8 References non utilisées de mon noeud "Control [ ]", ne faut-il pas "aussi" les fermer ?
Autre question...
Si je ferme la Reference du Front Panel, ne vais-je pas invalider toutes les References qui en découlent ?
soit invalider les References du Tableau "Control [ ]" ?
Et de façon plus générale, en fermant la Reference d'un Front Panel,
que deviennent toutes les References créées "au delà" ??
le 05-16-2012 12:08 PM
Je suis un peu perdu ...
Comment se fait-il que "ceci" fonctionne sans problème ???
D'une façon parfaitement séquentielle, je ferme la Reference avant de l'utiliser,
comment ce code peut-il fonctionner ? ...
(j'ai un seul Controle sur mon FP, d'où l'index "0")