Partager l'article ! Variables Globales Non Volatiles: Ce script permet de partager des valeurs de base (string, int) entre scripts ou entre plusieurs lancements d'un ...
Ce script permet de partager des valeurs de base (string, int) entre scripts ou entre plusieurs lancements d'un même script.
Les valeurs sont écrites et lues dans l'équivalent de variables globales aux scripts.
Ces variables sont implémentées avec des fichiers.
Il suffit d'abord de céer un objet "Global" qui va regrouper un ensemble de variables sous la forme d'un répertoire.
Ensuite une variable peut-etre lue et écrite par les méthodes .get() et .set() de cet objet. Voir le test à la fin du source.
Par défaut les valeurs sont des strings, mais il est possible de définir un autre type de variable comme "int" (methode .setType()). Dans ce cas la lecture de la variable retourne une valeur de
ce type.
/************************************************************************
Global Variables
************************************************************************
A "Global" object enables to read and write global and non volatile
variables (implemented with files) that can be shared by scripts.
By default variables are strings. Integer variables can be defined
with .setType(). To manage other types, adjust this script.
In the corresponding files the first line defines the type and the rest is
the variable value.
Look at GlobalTest() for an example.
************************************************************************
28/02/2010 V1r01 Habaki : Creation
************************************************************************/
/*----------------------------------------------------------------------*
Global Constructor
*----------------------------------------------------------------------*/
function Global(
Path // Path of the variable files
)
{
var Dir;
this.FileType = "txt"; // Type of files
this.Path = Path;
Dir = new Folder(Path);
if (! Dir.exist) {
Dir.create();
}
// Array of types of values: "string", "int"
this.varType = new Array();
}
/*----------------------------------------------------------------------*
Set the type of a variable
*----------------------------------------------------------------------*/
Global.prototype.setType = function(
Name, // Variable Name
Type // Variable type: "string", "int"
)
{
this.varType[Name] = Type;
}
/*----------------------------------------------------------------------*
Set a variable value
*----------------------------------------------------------------------*/
Global.prototype.set = function(
Name, // Variable Name
Value // Value to Set into
)
{
var Type;
var GF = File(this.Path + '/' + Name + "." + this.FileType);
GF.open("w");
if ((Type = this.varType[Name]) != undefined) {
GF.writeln(Type);
} else {
GF.writeln("string");
}
GF.write(Value);
GF.close();
}
/*----------------------------------------------------------------------*
Get a variable value
*----------------------------------------------------------------------*/
Global.prototype.get = function(
Name // Variable Name
)
{
var GF = File(this.Path + '/' + Name + "." + this.FileType);
var Val= "";
var Type="";
if (GF.exists) {
GF.open("r");
Type = GF.readln();
Val = GF.read();
GF.close();
if (Type == "int") {
Val = parseInt(Val);
}
}
return(Val);
}
/*----------------------------------------------------------------------*
Test
*----------------------------------------------------------------------*/
function GlobalTest()
{
try {
// Create a global environment
var MyGlob = new Global("c:/script"); // windows
// string variable
MyGlob.set("MySt", "Hello");
alert("MySt = " + MyGlob.get("MySt"));
// int variable
MyGlob.setType("MyNum", "int");
MyGlob.set("MyNum", 100);
alert("MyNum = " + (MyGlob.get("MyNum") + 10));
// Not defined variable -> ""
alert("MyNotDef = " + MyGlob.get("MyNotDef"));
} catch (ex) {
alert(ex.message)
}
}
/*----------------------------------------------------------------------*/
//GlobalTest();
/*----------------------------------------------------------------------*/