From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Communauté des utilisateurs LabVIEW Discussions

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

Remplacer les points pr des virgules dans un tableau de string

Résolu !
Accéder à la solution

 Bonjour,

 

Je viens vous voir car depuis ce midi je bloque sur quelque chose d'assez frustrant.

En fait, je cherche à remplacer les points que j'ai dans mon tableau de string par des , afin de pouvoir ensuite faire la basculement sur Excel beaucoup plus facilement.

Malgré de nombreux posts consultés, même si la majorité traite du raisonnement inverse, je n'ai pas réussi à obtenir ce que je voulais.

Soit j'obtiens un 0, et ça s'arrête là lorsque le booléen de l'option "tout remplacer est désactivé" soit j'obtiens un nombre à virgule mais qui se limite à 6 décimales.

 

Auriez-vous des conseils concernant mon problème ?

Toute remarque est la bienvenue 🙂

 

Merci d'avance 😉

0 Compliments
Message 1 sur 16
6 073 Visites

salut tu peux faire un sous-VI de la zone que tu as entourée en rouge? tu auras ainsi une fonction avec en entrée un tableau 1D de double et en sorite un tableau 1D de string.

Normalement tu viens de faire un sous-VI qui transforme un tableau avec séparateur décimal . vers un tableau 1D string séparateur décimal ,

tu peux ainsi regarder si le code fonctionne ou pas.

Sinon attention à la gestion d'erreur dans la boucle For, s'il y a une erreur il ne se passe rien

 

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 2 sur 16
6 065 Visites

Bonjour Luc,

 

Merci de ton retour.

Cependant, je me permets de te demander quelques éclaircissements !

Je ne comprends pas l'avantage d'un sous Vi dans mon programme, hormis un gain de place, car pour moi un sousVI est simplement une partie de code "condensée".

Ensuite, concernant le but de cette partie de code, c'était de changer le type de séparateur décimal (j'obtenais un point alors que je voudrais des virgules sous Excel.) En effet, au début je copier coller mes données dans excel avec un point comme séparateur décimal que je remplacer par une virgule (find et replace) mais au bout d'un moment cette étape me modifiait les données (ex 0.00000001 -> 00:00:01). J'ai donc décidé de modifier directement dans mon programme. mais malgré plusieeurs essais, mon code en l'état ne fonctionne pas.

 

Dernière chose, effectivement, rien ne se passe lorsqu'une erreur est detectée, mais je vous avoue que la gestion des erreurs est une chose sur laquelle je ne suis pas très à l'aise. je vais tout de même essayer de corriger ça avec une boucle condition.

 

je te remercie 😉

0 Compliments
Message 3 sur 16
6 032 Visites

Bonjour Luc,

 

Merci de ton retour.

Cependant, je me permets de te demander quelques éclaircissements !

Je ne comprends pas l'avantage d'un sous Vi dans mon programme, hormis un gain de place, car pour moi un sousVI est simplement une partie de code "condensée".

Ensuite, concernant le but de cette partie de code, c'était de changer le type de séparateur décimal (j'obtenais un point alors que je voudrais des virgules sous Excel.) En effet, au début je copier coller mes données dans excel avec un point comme séparateur décimal que je remplacer par une virgule (find et replace) mais au bout d'un moment cette étape me modifiait les données (ex 0.00000001 -> 00:00:01). J'ai donc décidé de modifier directement dans mon programme. mais malgré plusieeurs essais, mon code en l'état ne fonctionne pas.

 

Dernière chose, effectivement, rien ne se passe lorsqu'une erreur est detectée, mais je vous avoue que la gestion des erreurs est une chose sur laquelle je ne suis pas très à l'aise. je vais tout de même essayer de corriger ça avec une boucle condition.

 

je te remercie 😉

0 Compliments
Message 4 sur 16
6 008 Visites

bonjour, pour te répondre

1) Je ne comprends pas l'avantage d'un sous Vi dans mon programme

La réponse peut être assez longue. Je me focalise sur ton problème :

  • un code doit être modulaire, réutilisable, permettre une mise au point rapide.
  • Tu imagines LabVIEW sans la palette des fonctions de la vi.lib?
  • Tu dois pouvoir représenter ton code par un diagramme fonctionnel, des rectangles avec une flèche pour indiquer les transitions. Les blocs fonctionnels sont des fonctions logicielles. L'architecture doit être représenté dans le code. Il faut donc des sous-fonctions
  • cela permet de faire un ensemble homogène, donc une fonction logicielle, qui permet de convertir un tableau de double vers un tableau de chaînes de caractères avec le séparateur ",". Cela te permet de me donner le code, pour vérifier si c'est bien codé. Le problème est-il dans cette fonction ou dans la fonction de sauvegarde sur disque ??? Facilement analysable, documenté, réutilisable, mise au point évidente,... si problème voir ailleurs.
  • Aujourd'hui tu me montres une image dans un ensemble. Avec la sous-fonction, tu peux me donner que le vi en question, et travailler dessus

2) Ensuite, concernant le but de cette partie de code, c'était de changer le type de séparateur décimal

oui je comprends. Sur ton image l'erreur ne me saute pas au nez.

Je te propose : Tu fais une sous-fonctions, tu la testes, tu peux le mettre sur le forum pour demander de l'aide.

L'erreur peut venir de la fonction de sauvegarde : Write Delimited Spreadsheet (string).vi par rapport au format que tu as passé en paramètre. As-tu fait le test?

 

3) j'obtenais un point alors que je voudrais des virgules sous Excel.

oui. Cela dit, pour remarque ton problème est ultra classique, tu peux modifier le séparateur décimal de

  • ton OS en . ou ,"
  • indépendamment aussi celui d'Excel dans les options d'Excel pour mettre celui de l'OS ou un personnalisé.

4) mais au bout d'un moment cette étape me modifiait les données (ex 0.00000001 -> 00:00:01). 

c'est le format de la cellule qui est en heure et pas standard au nombre. clic droit sur la plage de cellules

 

5) J'ai donc décidé de modifier directement dans mon programme. mais malgré plusieurs essais, mon code en l'état ne fonctionne pas.

tu as raison, je pense

 

6) Dernière chose, effectivement, rien ne se passe lorsqu'une erreur est détectée,

sur une boucle For pour ne pas perdre une erreur, il faut mettre un registre à décalage sur le tunnel de l'erreur.

Tu peux ajouter à arrêt sur condition : clic droit est sélectionner >> conditional terminal  (la condition étant si erreur en câblant la sortie d'erreur)

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 5 sur 16
6 025 Visites

en plus le problème de mettre une image plutôt que du code, c'est que pour t'aider je dois recoder la fonction pour comprendre le bug. Ton image doit être trop petite, car chez moi cela fonctionne... Smiley heureux

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 6 sur 16
6 022 Visites
Solution
Accepté par l'auteur du sujet Lablasc

Je suis conscient que les sous VI peuvent alléger le code tout en le rendant plus personalisable. Cependant, je me suis heurté à leur "complexité" il n'y a pas si longtemps, notamment ceux contenant des commandes. Je n'ai pas réussi à trouver la solution afin d'activer les commandes du sous vi à partir du VI principal. Depuis j'ai laissé tomber un peu les sous vi, sûrement à tort.

 

J'ai crée un sous-vi qui est censé changer le point en virgule. Celui-ci marche jusqu'à ce que le chiffre contienne trop de décimales et je me retrouves avec le cas que je vous avez explicité : "0,"

Mais malheureusement je ne vois pas d'où provient le problème.

 

Ensuite, concernant le write delimited spreadsheet, je ne pense pas que l'erreur provienne de cet endroit car aucune erreur n'est répertoriée dans le "conduit" d'erreur le traversant. De plus, il écrit bien ce qu'il lui reçois en commandes, des valeurs avec un point, car je n'ai pas réussi à corriger ça en amont.

 

Concernant les virgules sous excel, j'ai réussi à résoudre le problème, je voulais simplement que le cahngement se fasse dans labview afin de faciliter les choses (plus besoin de configurer chaque pc pour avoir des virgules à la place des points).

Pour l'autre problème, j'ai réussi à le résoudre également, et effectivement c'était le format de la cellule qui était en cause :).

 

Enfin, pour la boucle for j'ai fait ce que tu m'as dit, j'ai mis un arrêt sur condition , je vais juste rajouter un registre à décalage pour ne pas perdre les erreurs.

 

Mon sous VI est en pièce jointe 🙂

 

merci encore

0 Compliments
Message 7 sur 16
6 010 Visites

tu peux me donner un exemple de nombre qui provoque : Celui-ci marche jusqu'à ce que le chiffre contienne trop de décimales et je me retrouves avec le cas que je vous avez explicité : "0,"

c'est 0.00000000000000009? ou autre?

le code me semble correct.

 

Tu peux mettre une prob avec arrêt conditionnel si la valeur est 0

 

pour le reste je vois que tu avances dans la bonne direction. bravo

 

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 8 sur 16
6 004 Visites

merci de ton soutien !

Cela peut paraître anodin mais recevoir des encouragements de la part de la communauté c'est top ! 😉

 

Pour en revenir au code, un certain ouadji avait raison, la meilleure manière d'apprendre, comme dans beaucoup de choses d'ailleurs, c'est d'essayer de trouver par soi-même!

Mon programme marche effectivement, il s'agissait juste d'un souci d'affichage dans l'indicateur de type string. En fait le nombre était trop long, donc il ne m'affichait que le "0,".

 

Cependant, j'aurai une nouvelle question.

Qu'appeles tu une prob avec arrêt conditionnel ?

 

je te remercie de ton aide 😉

0 Compliments
Message 9 sur 16
6 002 Visites

sincèrement je suis content de t'avoir aidé, car j'ai le sentiment que tu as progressé. bravo

 

je voulais parler des sondes avec la possibilité de faire un point d'arrêt sur certaines valeurs

 

Techniques de mise au point

sur une sonde personnalisée, tu peux avoir des conditions

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 10 sur 16
5 993 Visites