Variables Globales Non Volatiles

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();
/*----------------------------------------------------------------------*/

Créer un blog gratuit sur over-blog.com - Contact - C.G.U. - Rémunération en droits d'auteur - Signaler un abus - Articles les plus commentés