Myriad Forum « Paramètres/Variables externes ou globaux »
 Welcome, Guest.
 You can read all messages, but to be able to post,
 please Login or Register.
Nov 19th, 2018, 12:50am 
   Myriad Forum
   MyrScript Language
(Moderator: Forum Administrator)
   Paramètres/Variables externes ou globaux
« Previous topic | Next topic »
Pages: 1 2  Reply | Notify of replies | Print
   Author  Topic: Paramètres/Variables externes ou globaux  (Read 431 times)
Andre_B
Board Master
*****





   


Gender: male
Posts: 820
Paramètres/Variables externes ou globaux  
« on: Aug 24th, 2018, 3:02pm »
Quote | Modify

On peut activer un script en l'appelant en "mode exécution", ou en "mode développement" (ce dernier étant l'appel avec CTRL, suivi d'une activation avec les flèches bleues).  
 
Est-ce que le code peut savoir comment le script a été appelé? Par exemple pour activer un "mode rapide" en cas d'appel "exécutant", un "mode paramétré" dans cas d'un appel "développement"?  
 
 
Et deuxième question, liée seulement dans ma tête:  
 
Peut-on sauver des variables "externes"? donc plus que globales, et qui restent accessibles "pour toujours" sur le même système/utilisateur?  (sauf crash éventuellement).
 
Un peu le principe des cookies...  
 
Je peux évidemment sauver des variables dans un ou plusieurs fichiers, en les étiquetant correctement...  
 
Merci
offline

André Baeck, belge vivant dans le Gard
Geo
Board Master
*****





   


Gender: male
Posts: 1905
Re: Paramètres/Variables externes ou globaux  
« Reply #1 on: Aug 25th, 2018, 10:42am »
Quote | Modify

Bonne question
La gestion et l'utilisation des "globaux" (et des sous-programmes) mériterait une chapitre dans la documentation, exemples à l'appui.
C'est sur le forum que j'ai appris comment afficher leur contenu dans la fenêtre des variables DOS, sans savoir exactement ce qui est mémorisé ou pas.
 
Pour ma part, j'ai essayé de me baser sur des scripts livrés avec HA et j'ai tenté de faire mon propre module "GLOBAUX.Mys" appelé par Include, je vous en dévoile les premières lignes :
--------------------
-- Définitions utilisées dans les Programmes appelants  
-- ne pas mettre dans les Sp cela réinitialise les variables
--
-- variables globales (en majuscules)
--
SOUS_PROGRAMME = true  --  pour les modules appelés
CODE_RETOUR = nil
GLOBAL_PARTITION = nil
GLOBAL_PUPITRE = nil
--------...--------------------------
 
J'y ai mis aussi une fonction pour pouvoir l'utiliser dans le programme appelant.
 
Peut-on modifier durablement les valeurs "définies" dans ce fichier en Myrscript ? Théoriquement sa durée de vie est limitée à l'exécution du programme appelant. Sauf à modifier le fichier lui-même dans le script et le réécrire.
Est-ce possible ? Il n'est pas évident que l'accès au fichier soit autorisé et si ça marche, les modifications ne seront prises en compte qu'au prochain chargement sans doute.
Après, la difficulté est de ne pas se mélanger les pinceaux entre modification de valeur d'une variable et modification de la source du module.  
Avec des idées claires au départ, ça doit être possible.
 
Votre idée de mettre des valeurs stables dans un fichier texte me parait une bonne idée, il faut quand même développer les fonctions classiques de recherche, lecture, modification, ajout. On pourrait mettre tout ça dans un module ... global.
 
 
 
offline
Andre_B
Board Master
*****





   


Gender: male
Posts: 820
Re: Paramètres/Variables externes ou globaux  
« Reply #2 on: Aug 26th, 2018, 11:08am »
Quote | Modify

Je ne suis pas (encore) à avoir des "sous-scripts", seulement à exécuter des scripts en mode rapide, dans certains cas (via un raccourci et sans interaction).  
 
Mais j'ai trouvé, presque par hasard, ce que je cherche: lorsqu'un script est appelé en mode "debug", l'include "MsDefine" est appelé préalablement. Ce qui n'est pas le cas en cas d'appel direct.  
 
Cela me semble bizarre, car on peut voir un script - où on a oublié cet include - fonctionner parfaitement en mode debug, et pas du tout ensuite...  
 
Mais enfin, pour le moment je vais prendre cela pour ce que ça m'apporte...
 
 
Quant aux variables de type cookie, je vais probablement m'y lancer (en utilisant des fichiers externes) au début septemble, si entre-temps personne n'a de meilleure suggestion.    
 
 
Ce que je cherche maintenant, c'est à sortir "proprement" d'un script de type "fenêtre flottante". Il me semble que coder "exit()" marche parfois, mais pas toujours.
offline

André Baeck, belge vivant dans le Gard
Geo
Board Master
*****





   


Gender: male
Posts: 1905
Re: Paramètres/Variables externes ou globaux  
« Reply #3 on: Aug 26th, 2018, 6:55pm »
Quote | Modify

Quote:
... lorsqu'un script est appelé en mode "debug", l'include "MsDefine" est appelé préalablement. Ce qui n'est pas le cas en cas d'appel direct.  
 
Cela me semble bizarre, car on peut voir un script - où on a oublié cet include - fonctionner parfaitement en mode debug, et pas du tout ensuite...

 
Pour le moins bizarre en effet.
 
Quote:
... Il me semble que coder "exit()" marche parfois, mais pas toujours.

Pas eu de surprise de ce côté, je fais toutes mes sorties anticipées de script de cette manière, je n'ai pas de souvenir particulier à ce sujet.
 
offline
PaulL
Board Senior Member
****




Organist and choir director

   


Gender: male
Posts: 489
Re: Paramètres/Variables externes ou globaux  
« Reply #4 on: Aug 26th, 2018, 10:19pm »
Quote | Modify

You guys are talking about having a config file for a script, right?  It ought to be simple to implement, I should think.  Of course, we're talking about HA here . . .
offline

Le silence éternel des espaces infinis m'effraie.
Church musician

HA+VS+PdfToMusic Win 10
Andre_B
Board Master
*****





   


Gender: male
Posts: 820
Re: Paramètres/Variables externes ou globaux  
« Reply #5 on: Aug 27th, 2018, 8:27am »
Quote | Modify

Yes, Paul, we are talking HA, or more precisely MyrScript...  
 
I'm not thinking specifically of a configuration file, in which my usual preferences or default values are stored. I have that in the form of an Include file.  
 
What I mean, is to store variables (which can be personal settings) somewhere above the MyrScript variables, so that they remain from one call of the script to the other, over one or more invocations  of HA, over one or more Windows startups.  
 
Just as many settings in HA itself (herself? it may be seen as a boat in which we are all sailors.... ) are staying till changed the next time.  
 
Yes, if that does not exist in a hidden or simply unknown way, that could be implemented through an Include which is dyanamically built. Easier to say...
offline

André Baeck, belge vivant dans le Gard
PaulL
Board Senior Member
****




Organist and choir director

   


Gender: male
Posts: 489
Re: Paramètres/Variables externes ou globaux  
« Reply #6 on: Aug 27th, 2018, 8:21pm »
Quote | Modify

Windows system variables used to persist from startup to startup, as long as there was one controlled shutdown to make them be saved.  If that's still true with Windows 10, I have no idea.  Or how one would go about setting them.  (Oh, how I miss XP!)
 
But once you figure out how to introduce a system variable into the Windows environment, you next have to figure out if a script can access it.  Good question!  I'll do a little experimenting when I have time.  My bet is that Lua has some way of doing that, and further that the Guillons retained that ability in Myrscript, simply because it would be needed from time to time  I bet even further that it's not in the documentation, or this thread wouldn't exist, am I right?
offline

Le silence éternel des espaces infinis m'effraie.
Church musician

HA+VS+PdfToMusic Win 10
Geo
Board Master
*****





   


Gender: male
Posts: 1905
Re: Paramètres/Variables externes ou globaux  
« Reply #7 on: Aug 28th, 2018, 4:10pm »
Quote | Modify

Paul a donné une piste.
Voici un extrait du manuel Myrscript au paragraphe :
GetPreferencesPathName(...)
 
"Important note : Because the content of this folder is shared between scripts, [...] Your file name must begin with the first 5 characters of your personal registration code, followed by the name you want.  
[...] "
J'avoue ne pas avoir tout compris.
Effectivement j'ai dans ce dossier des fichiers du genre :
XHOSZ-GestionDesParoles.cfg
qui sont des fichiers texte.
Le travail de lecture / écriture reste à faire mais au moins, il y a un dossier réservé pour cela.
 
Pour Windows, de mémoire il est assez facile de faire des variables, pour les utiliser, c'est une autre affaire.
 
offline
Andre_B
Board Master
*****





   


Gender: male
Posts: 820
Re: Paramètres/Variables externes ou globaux  
« Reply #8 on: Aug 28th, 2018, 4:41pm »
Quote | Modify

on Aug 27th, 2018, 8:21pm, PaulL wrote:
I bet even further that it's not in the documentation, or this thread wouldn't exist, am I right?

 
Paul, I would humbly say that I didn't find anything like that in the documentation.  
 
Like in any treaty - up to philosophy and theology - , the manual is full of responses.  But it does not always state the questions which are answered...  
We poor guys can make searches on the keywords of our questions, which may not use the same vocabulary as the responses.  
 
An expert is somebody who doesn't know answers, but the language of the answers.
offline

André Baeck, belge vivant dans le Gard
Andre_B
Board Master
*****





   


Gender: male
Posts: 820
Re: Paramètres/Variables externes ou globaux  
« Reply #9 on: Aug 28th, 2018, 4:59pm »
Quote | Modify

Je ne cherche pas nécessairement à remonter au niveau de Windows, je peux très bien rester en HA...  
 
J'ai regardé ce path de préférences, j'y trouve des préférences enregistrées par le script "Join Files" ("Raboute Fichiers"). Ce script en fait un usage malgré tout assez limité.  
 
Je ne pensais pas vraiment à des préférences (je les ai dans une fonction),  mais à l'état MRU ("most recently used") des variables.  Quand un test est en cours, je change certaines options pour gagner du temps, et j'oublie toujours de refaire cela à chaque essai.  
 
Maintenant, entre une préférence stable, et une préférence temporaire, il n'y a techniquement pas de grande différence, sauf que la dernière demande plus d'automation.  
 
Avant de me lancer, je réfléchis sur la méthode (le preferences path pouvant être le réceptacle).  
 
Je peux, dans un fichier, enregistrer des suites de valeurs, le script retenant ce que signifie chaque ligne.  
 
Je peux aussi enregistrer une suite sans ordre de paires "nom de variable" et "valeur" (il peut y avoir des enregistrements successifs de la même variable, c'est la dernière qui compte).  
Je penche pour créer un fichier qui peut être lu par un simple "include".  
   
 
 
offline

André Baeck, belge vivant dans le Gard
Geo
Board Master
*****





   


Gender: male
Posts: 1905
Re: Paramètres/Variables externes ou globaux  
« Reply #10 on: Aug 28th, 2018, 6:56pm »
Quote | Modify

Quote:
Je peux aussi enregistrer une suite sans ordre de paires "nom de variable" et "valeur" ...  

 
Oui, on y met ce qu'on veut. L'avantage c'est que le script est utilisable par d'autres personnes sans préjuger de l'organisation de leurs disques.
La forme nom de variable : valeur est la plus classique, la plus lisible et la plus souple qu'on trouve dans le paramétrage de HA.  
Il y a aussi la solution plus simple qui semble être utilisée dans les quelques fichiers cfg que j'ai vu, la ligne 1 est la valeur de telle variable, la ligne 2 une autre variable etc.
En début de script on lit tout le fichier en affectant les valeurs trouvées. C'est bien plus simple à programmer, il faut juste faire suivre la documentation à chaque évolution.
offline
Andre_B
Board Master
*****





   


Gender: male
Posts: 820
Re: Paramètres/Variables externes ou globaux  
« Reply #11 on: Aug 28th, 2018, 8:15pm »
Quote | Modify

Quote:

... Il me semble que coder "exit()" marche parfois, mais pas toujours.  

on Aug 26th, 2018, 6:55pm, Geo wrote:

 
Pour le moins bizarre en effet.
 
Pas eu de surprise de ce côté, je fais toutes mes sorties anticipées de script de cette manière, je n'ai pas de souvenir particulier à ce sujet.

 
Apparemment ça marche lorsqu'on est dans une des "méthodes" des boutons et autres textes d'une fenêtre flottante, mais pas dans les fonctions de la fenêtre elle-même.  
offline

André Baeck, belge vivant dans le Gard
Daniel Frouvelle
Board Master
*****






   
WWW | Email

Gender: male
Posts: 1410
Re: Paramètres/Variables externes ou globaux  
« Reply #12 on: Aug 29th, 2018, 9:02am »
Quote | Modify

Bonjour André, Geo, si ça peut vous éclairer voici comment je procède dans la plupart des scripts que j'ai faits:  
Dans la fonction d'initialisation* je déclare un fichier de préférences que je vais lire dans la fonction "LoadPreference": (exemple ici je vais lire et sauvegarder la position de la fenêtre du script), à la sortie du script je vais écrire dans ce fichier ces deux valeurs dans la fonction "SavePreference"), avec les précautions d'usage (fichier inexistant ou valeur nulle, conversion chaine>nombre).
*On prendra soin d'initialiser avant l'appel à "LoadPreference" les valeurs désirées sachant qu'au tout premier démarrage du script le fichier des préférences n'existe pas

-----------------------
function Init(dialog)
           dialog.AreaLeft=292 dialog.AreaTop=32
          prefFileName="WHLED-Test1.cfg"
          dialog.LoadPreference(dialog)
end
---------------------------
function Exit(dialog)
          dialog.SavePreference(dialog)
end
--------------------------
function LoadPreference(dialog)
          local file
          local currentPath
          currentPath=GetCurrentPath()
          SetCurrentPath(GetPreferencesPathName())
          file=OpenFile(prefFileName,"rb")
                    if(file~=nil) then
                              a=tonumber(file.Read("l"))  if a~=nil then dialog.AreaLeft=a end
                              a=tonumber(file.Read("l"))  if a~=nil then dialog.AreaTop=a end
                              file.Close();
                    end
          SetCurrentPath(currentPath)
end
------------------------
function SavePreference(dialog)
          local file
          local currentPath
          currentPath=GetCurrentPath()
          SetCurrentPath(GetPreferencesPathName())
          file=OpenFile(prefFileName,"wb")
          if(file~=nil) then
                    file.WriteString(dialog.AreaLeft)
                    file.WriteChar(13)
                    file.WriteString(dialog.AreaTop)
                    file.WriteChar(13)
                    file.Close();
          end
          SetCurrentPath(currentPath)
end      
---------------------------------
Amistats, Danièl.
« Last Edit: Aug 29th, 2018, 9:11am by Daniel Frouvelle » offline
Geo
Board Master
*****





   


Gender: male
Posts: 1905
Re: Paramètres/Variables externes ou globaux  
« Reply #13 on: Aug 29th, 2018, 7:48pm »
Quote | Modify

Bonsoir Danièl
 
Merci pour ce code qui correspond à la deuxième approche dont je parlais ci-dessus : la n-ième ligne correspond à un paramètre précis.
L'avantage c'est que tu as pensé à tous les cas de figure.
 
Une question : le préfixe pour le nom du fichier, ce sont les 5 premiers caractères de ta clef HA ? Ou as-tu demandé un "identifiant développeur" à Myriad ?
offline
Daniel Frouvelle
Board Master
*****






   
WWW | Email

Gender: male
Posts: 1410
Re: Paramètres/Variables externes ou globaux  
« Reply #14 on: Aug 29th, 2018, 9:25pm »
Quote | Modify

Quote:
le préfixe pour le nom du fichier, ce sont les 5 premiers caractères de ta clef HA ? Ou as-tu demandé un "identifiant développeur" à Myriad ?
C'est bien les 5 premiers caractères de ma clé. Ce n'est pas une obligation mais une précaution pour éviter les doublons (c'est un conseil des concepteurs).
offline
Pages: 1 2  Reply | Notify of replies | Print

« Previous topic | Next topic »

« Myriad Forum » Powered by YaBB 1 Gold - SP 1.1!
YaBB © 2000-2002,
Xnull. All Rights Reserved.

Top of page
Legal information Last update:  (c) Myriad