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.

Discussions au sujet de NI LabVIEW

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

exécutable - écriture dans fichier

Probablement une question à 10 centimes Smiley frustré

 

contexte : 

 

en fin de code, j'écris un résultat dans un fichier log.

C'est un sous-sous-VI qui s'occupe de ça.

Le fichier log est "écrit" (ou créé, s'il n'existe pas) ... dans le répertoire de ce "sous-sous-VI".

Le soucis survient quand je crée (et que je fais tourner) l'exécutable.

L'application.exe ne retrouve pas le répertoire en question. (erreur code 7)

 

J'aimerais que ce fichier log soit écrit (ou créé) dans le répertoire de l'exécutable.

mais ... j'aimerais également que le code soit "valable" aussi bien en "mode run", qu'en mode "exécution exe".

 

J'espère que j'arrive à me faire comprendre ... 

 

En principe, je ne vais jamais jusqu'à l'exe, donc ce "problème" est nouveau pour moi.

En fait j'ai l'impression que toutes les références à des chemins (path) deviennent non valides quand on compile en exe. (?)

 

Très certainement une question de "débutant_exe" ... Smiley frustré

 

 

0 Compliments
Message 1 sur 19
5 122 Visites

hello ouadji, 

 

Pour bien cerner ton pbm : tu utilises  le vi "repertoir de l'application"? ou "chemin Vi actuel"? Ou autre chose?

 

 rep application.jpg

 

Antoine

 

 

Message 2 sur 19
5 113 Visites

Utilises-tu la fonction "Current VI's path" ?

Celle-ci retourne en effet un chemin différent pour un EXE.

Voici l'un des nombreux articles à ce sujet.

 

Depuis LV2009, cela peut être contourné en décochant l'option "Use LabVIEW 8.x file layout" dans la catégorie "Advanced" de l'application builder.  Voir par exemple ici pour plus de détails.

Message 3 sur 19
5 102 Visites

 j'utilisais "current VI's path" ...

J'ai essayé "application directory" ... sans résultat.

 

Je vais aller voir de plus près les liens données par JB

 

merci à vous deux.

0 Compliments
Message 4 sur 19
5 095 Visites

J'ai testé pas mal de choses (au départ du code proposé via le 1er lien de JB)

(différentes petites choses que je n'aime pas danc ce code d'origine ... mais l'idée de départ est bonne)

 

je m'arrête sur le code ci-dessous (simple et qui semble fiable)

 

après le "call chain" j'utilise un "delete from array" ... qui me donne le VI racine.

Je fais une recherche sur la présence de la chaine ".exe".

Si je ne la trouve pas, j'utilise la totalité du chemin donné par le noeud "VI-Path", je strip ... et j'ai la racine ou se trouve le VI Main.

Si je la trouve, j'utilise la chaine "before match", je strip ... et j'ai la racine ou se trouve l'exécutable.

 

PS (pour les tordus comme moi)

cela fonctionne même si le nom du vi ou le nom de l'exécutable contient la chaine ".exe".

Par exemple : toto.exe.vi (VI) ... ou ... toto.exe.exe (exe)  .. Smiley heureux  Smiley tirant la langue

 

 

SR1.png

 

Message 5 sur 19
5 079 Visites

Ce problème est un grand classique !


0 Compliments
Message 6 sur 19
5 059 Visites

@Mathieu :

 

Bonjour Mathieu,

 

Ce problème est un grand classique !

 

oui, je m'en doute. Problème "nouveau" pour moi ...

Je n'ai que très rarement compilé jusqu'à l'exécutable. (En ce qui me concerne, je n'en ai pas l'utilité.)

Je ne me rendais pas compte que certaines choses pouvaient parfaitement fonctionner en mode "edit-run" ...

et pas du tout avec l'exécutable.

 

existe-t-il d'autres "grands classiques" (pièges, non fonctionnements possibles) ... quand on construit un exe ?

0 Compliments
Message 7 sur 19
5 053 Visites

un truc qui me vient à l'esprit, (pas vraiment un piége) : une fois compilé, tu ne peux plus créer ou changer les valeurs par défaut des commandes.

En cas de besoin, il faut créer un fichier .ini externe à l'application , il y a une sous palette pour ça dans la palette "écriture de fichier".

 

 

 

0 Compliments
Message 8 sur 19
5 046 Visites

Dans la série ... compiler un exe pour les NULS (moi, le premier)

 

quand on sort du code en "edit-run" .... par un "stop/exit" par exemple ... et bien, on repasse en edit, et pi c'est tout  Smiley heureux

 

mais avec un exe, quand on termine un soft ... il faut killer le process complètement ... il faut un FP_Close en fin de code  

 

Smiley très heureux ... ça, c'est réellement pour "montrer" que je compile rarement  Smiley tirant la langue

 

(mais bon, là maintenant ... j'ai progressé Smiley clignant de l'œil )

0 Compliments
Message 9 sur 19
5 037 Visites

Si je ne m'abuse, en mode "exe":

- si tu utilise stop, on a en effet le comportement dont tu parles.

- si tu utilise "quitter LV"  (exit), alors ça ferme proprement le processus, la face avant etc.

 

L'un étant adapté à l'edit-run, l'autre à l'exe, je mets toujours les deux dans une condition avec un test "suis-je un exe" comme critére de la condition.

 

 

 

Message 10 sur 19
5 035 Visites