le 07-09-2020 01:36 AM
Bonjour,
Je commence a avoir pas mal d'heure au compteur en Labview mais la je butte ... Je voudrais séparer un tableau 1D en deux tableaux 1D de la façon suivante :
en entrée j'ai un tableau de cette forme :
et je souhaite récupérer en sortie deux tableaux de cette forme :
Merci d'avance
Résolu ! Accéder à la solution.
le 07-09-2020 01:57 AM
Bonjour PicPic,
Le critère de séparation repose sur le contenu des éléments de type chaîne du tableau. Il faut donc traiter les chaînes, il n'y aura pas de solution immédiate en utilisant une ou deux fonctions LabVIEW.
J'aurais tendance à mettre en place un parser, qui prendra dans une boucle tous les éléments du tableau d'entrée, afin d'isoler par ligne, puis en faisant la séparation (signe égal) des deux parties attendues en sortie. La boucle permettra de reconstruire en parallèle les deux tableaux action et paramètres.
Pour le parsing en lui-même, essayez de voir ce qu'il est possible de faire avec la fonction Spreadsheet String To Array. En jouant sur le séparateur, il doit être possible (en deux temps) de récupérer chacun des éléments action = paramètre (sans le point-virgule peut être), puis de séparer les actions du paramètre.
Le pendant de la fonction Spreadsheet String To Array, Array To Spreadsheet String, devrait vous permettre de "réassembler" la liste des actions ou des paramètre pour un élément du tableau de sortie
Cordialement,
le 07-09-2020 02:45 AM
Mon problème se pose lorsque j'ai plusieurs lignes dans la même cellule .... J'ai tenté diverse chose tel que faire une boucle while dans le for et de récupérer le restant de la cellule avec un registre a décalage etc mais sans succès....
07-09-2020 03:16 AM - modifié 07-09-2020 03:17 AM
Voici une proposition avec une expression régulière pour le parsing :
Il faut effectivement parcourir la chaîne, c'est l'objet de la boucle While et du registre à décalage portant l'offset / offset past match - on commence bien évidemment à zéro.
Dans l'expression régulière :
Les deux résultats, paramètre et action sont auto-indexés, de façon conditionnelle pour ne pas rajouter inutilement la dernière ligne, quand la fonction ne "trouve pas" et renvoie deux chaînes vides.
Enfin, la fonction Array To Spreadsheet String permet de reconstituer une chaîne unique à partir du tableau.
L'expression régulière fonctionne pour cet exemple, il y aurait peut être d'autres cas à traiter. SI vous ne connaissez pas cet outil (qui n'est pas spécifique à LabVIEW), je ne peux que vous encourager à explorer les expressions régulière, c'est très puissant. A titre personnel, c'est un outil que j'aime beaucoup !
Bonne continuation,
le 07-09-2020 04:03 AM
Merci !
J'ai encore appris quelque chose je ne savais pas que l'on pouvait séparer avec le:
Je l'ai toujours utilisé sous sa "forme basique" mais cette petite option est méga pratique.
Merci beaucoup