Discussions au sujet de NI LabVIEW

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

Défi Éclair

j'ai peut etre une idee comment cela fonctionne,  je verifierai ce soir.

https://images.youracclaim.com/size/110x110/images/7c5d31f5-2069-4618-ba59-b710c2b6bbe4/CLD.png
0 Compliments
Message 11 sur 19
2 485 Visites

Allons-y avec l'explication,

 

Premièrement, recréer le code. Comme la plupart l'on trouvé il s'agit dans un premier temps de convertir une chaine de caractères en un tableau 1D de booléens à l'aide de la fonction typecast et de transformer le tableau résultant en constante. On utilise ensuite cette constante avec la fonction typecast pour recréer la chaine de caractères.

 

Comment cela fonctionne-t-il? La clé est la fonction typecast. Tous les types de data sont gardés en mémoire sous forme de bytes. La fonction typecast ne modifie pas la valeur en mémoire mais elle représente cette valeur sous un autre type de data lorsque c'est possible (c'est un peu une version élargie des fonctions de conversion numérique) . Dans le code du défi chaque caractère d'une chaine est représenté par un U8 dont la valeur correspond à celle de ce caractère dans la table ASCII. Un booléen est également gardé en mémoire sous la forme d'un U8, la fonction typecast est utilisée pour réinterpréter les bytes de la chaine de caractères comme étant un tableau 1D de booléens. Par exemple le caractère "A" à la valeur 0x41, il sera donc converti en booléen VRAI mais dont la valeur U8 en mémoire est 0x41 et non pas 0x01. Dans le lien précédent il est précisé que toute valeur différente de zéro correspond à la valeur VRAI, c'est pourquoi la chaine de caractères convertie est représentée par un tableau 1D de valeurs VRAI (seul le caractère NULL 0x00 sera représenté par la valeur FAUX). Si vous avez fait la vérification vous observerez que la taille du tableau 1D de booléens correspond à la longueur de la chaine de caractères.

 

Autre remarque, si vous essayez de changer les valeurs des booléens du tableau les booléens reprendrons leurs valeur nominales de 0 ou 1, Les caractères correspondant à ces booléens ne seront plus lisibles dans la chaine résultante.

 

J'ai découvert ce code dans ce fil (troisième message posté par Jean Pierre).

 

Ben64

Message 12 sur 19
2 472 Visites

Merci pour l'explication 😉

J'ai regardé l'aide détaillée de la fonction hier, mais je ne devais pas avoir les yeux en face des trous...

CLAMaxime -- Kudos are a great way to say thank you
0 Compliments
Message 13 sur 19
2 456 Visites

salut, je ne connaissais pas, et je te remercie encore. Je me suis vraiment bien amusé avec. J'ai donné le petit code suivant à mes collègues de travail (tous des CLA et CTA)... nous avons bien rigolé. Merci pour le partage. Je pense que je n'ai pas terminé d'en parlé!

Valeur du boolean.pngbonne journée A+ Luc

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 14 sur 19
2 423 Visites

Ça laisse encore moins d'indices que le code que j'ai posté! Smiley très heureux Ils ont trouvé la solution?

 

Ben64

0 Compliments
Message 15 sur 19
2 418 Visites

non! évidement. Surtout que je monterais le code en disant "alors regarde le code suivant"...

Valeur du boolean.png

toi qui est CLA, peux-tu me donner le résultat? même si c'est trop simple comme question...

un petit "Run" avec un résultat de 151,

puis je change la constante à false -> le résultat devient 0,

et je rechange la constante à True.... alors??? 151? non, 1!

Je vais me garder cet exemple de côté, car je pense le ressortir dans les prochains jours. Il va rendre dingue bien plus d'un développeur LabVIEW.

A+ Luc

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

Message 16 sur 19
2 411 Visites

Pour ceux qui ont participé au Challenge de Novembre de Guillaume l'explication de la méthode sans boucle minimale se trouve également dans la fonction Typecast. Avant LabVIEW 5 les booléens étaient conservé en mémoire en utilisant 2 bytes sauf dans le cas d'un tableau où chaque élément du tableau représentait un bit. En utilisant la fonction typecast dans le mode Convert 4.x Data on obtenait directement le résultat. Félicitation à Didier qui a réussit à trouver l'astuce!

 

Ben64

0 Compliments
Message 17 sur 19
2 405 Visites

Même si ça a l'air sympa comme ça, je trouve que l'explication met le doigt sur une faiblesse plutôt que sur une force de labview. Si je te suis bien, le "dictionnaire" des typecast est dynamique, et c'est une sorte de variable globale qui se cache dans L'IDE. J'espère ne jamais avoir à debugger un truc pareil...

0 Compliments
Message 18 sur 19
2 393 Visites

pas une variable globale plutôt un variant ?

0 Compliments
Message 19 sur 19
2 386 Visites