Page 1 of 1
Problème de lecture du fichier .ini
Posted: 05 Aug 2015, 20:35
by Sergent-Quentin
Bonjour,
J'ai trouver un bug, lorsqu'on écrit dans un fichier ini avec une valeur qui tiens sur une ligne comme ceci :
Section : Carton
Rubrique : Nombre
Valeur : 54
et qu'on lit avec lecture ini cette valeur, il n'y a aucun problème.
Mais lorsque qu'on écrit une valeur sur plusieurs lignes :
Section : Carton
Rubrique : Nombre
Valeur : Ligne1
Ligne2
Et qu'ont lit cette valeur, il y a une erreur indiquant qu'il ne peut pas lire le fichier
Cela fonctionnait dans l'ancienne version car je stockais des descriptions ^^
Voilà tout, si une solution temporaire peut-être trouvé je suis preneur car j'en ai vraiment besoin svp ^^
Merci
Cordialement
Sergent-Quentin
Re: Problème de lecture du fichier .ini
Posted: 09 Aug 2015, 21:25
by francois
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
Re: Problème de lecture du fichier .ini
Posted: 10 Aug 2015, 15:22
by Sergent-Quentin
Bon travail ^^
Je l'ai tester et ça résout le problème
en attendant un correctif
Merci beaucoup
Cordialement
Sergent-Quentin
Re: Problème de lecture du fichier .ini
Posted: 17 Aug 2015, 13:34
by Jmgr
J'ai du changer d'outil pour la lecture et l'écriture des fichiers INI (l'autre n'était plus maintenu par ses auteurs) et le nouvel outil n'a pas exactement le même comportement. Il semble être plus strict dans son interprétation du format INI (qui n'est pas normé, donc chacun a sa propre interprétation). Ce comportement ne peut pas être modifié donc je n'ai pas de solution à proposer, malheureusement.