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
Problème de lecture du fichier .ini
Re: Problème de lecture du fichier .ini
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
Action 2 : Lire le fichier INI Normalisé (en tant que fichier INI)
Action 3 : Changer 'DLM' en "retour à la ligne"
Francois
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)
Code: Select all
Description = Description.replace(/#=#/g,String.fromCharCode(10))
Console.print(Description)
-
- Posts: 274
- Joined: 11 Jun 2014, 14:45
Re: Problème de lecture du fichier .ini
Bon travail ^^
Je l'ai tester et ça résout le problème en attendant un correctif
Merci beaucoup
Cordialement
Sergent-Quentin
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
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.
"My software never has bugs. It just develops random features."