Bonjour,
Préoccupation :
-> Modifier le moins possible les scripts existants. Et donc conserver la lecture d'un fichier INI.
Démarche
Action 1 : Création d'un fichier INI 'Normalisé : 1 variable => 1 ligne.
Action 2 : Lire le fichier INI normalisé
Action 3 : Par variable, récupérer les retours à la ligne
Action 1 : creation d'un fichier normalisé
Paramètrer en début de script le nom des fichiers INI
Code: Select all
//=====
// A personnaliser
//=====
repp_fichier = "C://temp"
nom_fichier_in = "test_1.ini"
nom_fichier_out = "test_2.ini"
//=====
//=====
// servira après que le fichier INI ait été normalisé ( 1 variable = 1 ligne)
// Et lu via Actiona en tant que fichier INI :
// Pour remettre sur N lignes la dite variable.
//=====
dlm= "#=#" // dlm de fin de ligne ( cas des variables multi lignes)
//=====
//==> fichier INI avec "Variables multi lignes"
//=====
fich_in_chemin_complet= repp_fichier + "/" + nom_fichier_in
var fich_in = new File();
fich_in.open(fich_in_chemin_complet,File.ReadOnly| File.Text);
au_km= fich_in.readText();
fin_ligne =String.fromCharCode(10);
t_lignes =au_km.split(fin_ligne);
//=====
//=====
//==> Fichier INI "1 variable ---1 ligne"
//=====
fich_out_chemin_complet = repp_fichier + "\\" + nom_fichier_out;
var fich_out = new File();
fich_out.open(fich_out_chemin_complet,File.WriteOnly | File.Text);
//=====
//=====
//==> Remplissage fichier INI corrigé
//=====
w_zone=""
for(i=0;i<t_lignes.length;i=i+1)
{
section_a_traiter =false
variable_ligne_premiere =false
//=====
// on ne retient pas les lignes à blanc
//=====
if (t_lignes[i] =="") {continue;}
//=====
//=====
// on repère les lignes "classiques"
//=====
if ( t_lignes[i].indexOf("[") > -1 ) {section_a_traiter = true}
if ( t_lignes[i].indexOf("=") > -1) {variable_ligne_premiere =true}
//=====
//=====
// Si ligne actuelle avec structure classique
// On ecrit la variable précédente
// ( on ne sait le nombre de lignes d'une variable qu'à l'apparition de la variable suivante)
// De la sorte, on prend en compte
// 1) variable precedente sur une ligne
// 2) variable précédente sur N lignes
// Il faut simplement enlever le dernier 'dlm' qui ne sert à rien
// Lorsque la variable tient sur N lignes, les dlm intermédiaires sont donc conservés
//=====
if (i > 0 && (section_a_traiter == true || variable_ligne_premiere ==true))
{
// w_zone de la variable précédente est à ecrire, virer 'dlm' de fin
w_zone = w_zone.substr(0,w_zone.length - dlm.length) + " \n";
fich_out.writeText(w_zone);
w_zone = ""
}
//=====
// dans tous les cas ( pour la variable actuelle)
w_zone = w_zone + t_lignes[i] + dlm
};
//======
// Dans boucle, on ecrivait la variable précédente,
// en sortie de boucle il faut donc ecrire la derniere variable
w_zone = w_zone.substr(0,w_zone.length -dlm.length)
fich_out.writeText(w_zone);
fich_in.close();
fich_out.close();
Action 2 : Lire le fichier INI Normalisé (en tant que fichier INI)
Code: Select all
var fichier_ini= new IniFile()
fichier_ini.load(fich_out_chemin_complet);
fichier_ini.setSection("Carton");
Description= fichier_ini.keyValue("Description");
Console.print(Description)
Action 3 : Changer 'DLM' en "retour à la ligne"
Code: Select all
Description = Description.replace(/#=#/g,String.fromCharCode(10))
Console.print(Description)
Francois