[Résolu] Récupèrer une valeur dans un fichier ini ( code )

Vous voulez de l'aide ? Postez ici :)
Post Reply
Sergent-Quentin
Posts: 274
Joined: 11 Jun 2014, 14:45

[Résolu] Récupèrer une valeur dans un fichier ini ( code )

Post by Sergent-Quentin »

Bonjour,

Comme le dit le titre, je voulais récupérer une valeur dans un fichier ini sous forme de code, la valeur sera écrite de cette façon :

[Section A]
Carton = 560

Je vous remercie

Cordialement

Sergent-Quentin
Last edited by Sergent-Quentin on 01 Oct 2015, 16:07, edited 1 time in total.
User avatar
Jmgr
Admin
Posts: 1649
Joined: 07 Dec 2005, 15:45
Contact:

Re: Récupèrer une valeur dans un fichier ini ( code )

Post by Jmgr »

Salut,

Ça ne fonctionne pas avec l'objet IniFile?
"My software never has bugs. It just develops random features."
Sergent-Quentin
Posts: 274
Joined: 11 Jun 2014, 14:45

Re: Récupèrer une valeur dans un fichier ini ( code )

Post by Sergent-Quentin »

Salut,
Jmgr wrote:Ça ne fonctionne pas avec l'objet IniFile?
Je pense que si, mais je n'arrive pas faire le code malgré le wiki en faite ^^
User avatar
Jmgr
Admin
Posts: 1649
Joined: 07 Dec 2005, 15:45
Contact:

Re: Récupèrer une valeur dans un fichier ini ( code )

Post by Jmgr »

Voilà :

Code: Select all

var ini = new IniFile();
ini.load("fichier.ini");
ini.setSection("Section A");
var resultat = ini.keyValue("Carton");
"My software never has bugs. It just develops random features."
Sergent-Quentin
Posts: 274
Joined: 11 Jun 2014, 14:45

Re: Récupèrer une valeur dans un fichier ini ( code )

Post by Sergent-Quentin »

Merci beaucoup !!!
:D
Sergent-Quentin
Posts: 274
Joined: 11 Jun 2014, 14:45

Re: Récupèrer une valeur dans un fichier ini ( code )

Post by Sergent-Quentin »

Bonjour,

je voudrais cette fois-ci écrire dans un fichier ini :mrgreen:

En m'inspirant du wiki (myObject.keyValue(keyName, value);), J'ai fait ce code :

Code: Select all

var ini = new IniFile();
ini.load("Chemin/fichier.ini");
ini.setSection("Section A");
ini.keyValue("Carton", 1588);
Il n'a pas fonctionné :(

celui-ci non plus :

Code: Select all

var ini = new IniFile();
ini.load("Chemin/fichier.ini");
ini.setSection("Section A");
ini.keyValue("Carton", 1588);
ini.save("Chemin/fichier.ini");
Pouvez-vous m'aider svp ? :)

je vous remercie

Cordialement

Sergent-Quentin
User avatar
Jmgr
Admin
Posts: 1649
Joined: 07 Dec 2005, 15:45
Contact:

Re: Récupèrer une valeur dans un fichier ini ( code )

Post by Jmgr »

C'est presque ça. La fonction load(fichier) sert à charger un fichier, or, si tu veux ici écrire dans un fichier tu n'as pas besoin de le charger.

Code: Select all

var ini = new IniFile();
ini.setSection("Section A");
ini.keyValue("Carton", 1588);
ini.save("Chemin/fichier.ini");
Cela dit lorsque je teste ce code Actiona plante sur ma machine... Je ne peux pas déboguer ça ici, mais je pense qu'il y a un bug quelque part. Peux-tu tester chez toi et me dire si tu as également un plantage ?
"My software never has bugs. It just develops random features."
Sergent-Quentin
Posts: 274
Joined: 11 Jun 2014, 14:45

Re: Récupèrer une valeur dans un fichier ini ( code )

Post by Sergent-Quentin »

Merci pour la correction :)

En effet il plante chez moi aussi ^^
Sergent-Quentin
Posts: 274
Joined: 11 Jun 2014, 14:45

Re: Récupèrer une valeur dans un fichier ini ( code )

Post by Sergent-Quentin »

Bonjour,

Je ne sais pas trop si c'est un bug ou alors si alors si il manque quelque chose, je m'explique :

J'ai un fichier .ini et un fichier.txt

1/ Une fonction lit le titre dans le fichier .txt et le stock dans une variable

2/ Une autre fonction lit le fichier .ini depuis le titre stocker dans la variable

Seulement à ce moment actiona plante comme si le titre était faux, j'ai remplacer la fonction qui lit le titre dans le fichier .txt par une action "Lire fichier texte" et le stock dans une variable, là ça fonctionne.

Sauriez-vous pourquoi ça ne fonctionne pas avec le code ? :

Code: Select all

var ini, file, Prix, Titre;

function Lecture_Titre_Texte() {// Lit le titre dans le fichier texte
file = new File();
file.open('Fichier A.txt', File.ReadOnly);
Titre = file.readText().split('\n')[0];
file.close();
Console.print(Titre);
}

function Lecture_Annonce_Ini() { // Lit l'annonce dans le fichier ini
ini = new IniFile();
ini.load('Fichier B.ini');
ini.setSection(Titre);
Prix = ini.keyValue("Prix");
Console.print(Prix);
}

Lecture_Titre_Texte()
Lecture_Annonce_Ini();
Je vous remercie

Cordialement

Sergent-Quentin
francois
Posts: 456
Joined: 18 Oct 2010, 10:33
Location: France

Re: Récupèrer une valeur dans un fichier ini ( code )

Post by francois »

Bonjour,

Dans ton code, il y a :

Code: Select all

ini.setSection(Titre);
Soit tu donnes auparavant à la variable 'Titre' une valeur.
Soit tu mets directement une valeur dans cette ligne

Code: Select all

ini.setSection("mon titre");
A noter, Actiona ne se comporte pas de la même manière suivant la version :
Avec la 3.9, plantage.
Avec la 3.8, il ne trouve pas (normal, tu n'as pas donné de valeur à la variable Titre) mais ne plante pas.

Francois
Sergent-Quentin
Posts: 274
Joined: 11 Jun 2014, 14:45

Re: Récupèrer une valeur dans un fichier ini ( code )

Post by Sergent-Quentin »

Bonsoir,
francois wrote: Soit tu donnes auparavant à la variable 'Titre' une valeur.
Soit tu mets directement une valeur dans cette ligne
C'est ce que fait :

Code: Select all

function Lecture_Titre_Texte() {// Lit le titre dans le fichier texte
file = new File();
file.open('Fichier A.txt', File.ReadOnly);
Titre = file.readText().split('\n')[0];
file.close();
Console.print(Titre);
}
Dans mon fichier texte les titres étaient écris comme ceci :

Livre A
Livre B

J'ai modifié en les écrivants comme ceci :

Livre A/Livre B/

Et en changeant aussi le code :

Code: Select all

Titre = file.readText().split('\n')[0];
par :

Code: Select all

Titre = file.readText().split('/')[0];
Par contre si j'écris les titres dans mon fichier texte comme ceci :

Livre A
Livre B

et que j’exécute ce code :

Code: Select all

    var ini, file, Prix, Titre;

    function Lecture_Titre_Texte() {// Lit le titre dans le fichier texte
    file = new File();
    file.open('Fichier A.txt', File.ReadOnly);
    Titre = file.readText().split('\n')[0];
    file.close();
    Console.print(Titre);
    }

    function Lecture_Annonce_Ini() { // Lit l'annonce dans le fichier ini
    ini = new IniFile();
    ini.load('Fichier B.ini');
    ini.setSection(Titre);
    Prix = ini.keyValue("Prix");
    Console.print(Prix);
    }

    Lecture_Titre_Texte()
    Lecture_Annonce_Ini();
Le titre sera bien récupérer mais ne sera pas valide pour

Code: Select all

ini.setSection(Titre);
Cordialement

Sergent-Quentin
francois
Posts: 456
Joined: 18 Oct 2010, 10:33
Location: France

Re: Récupèrer une valeur dans un fichier ini ( code )

Post by francois »

J'ai répondu un peu trop vite, je n'avais pas vu que tu valorisais 'Titre' dans la Fonction 'Lecture_Titre_Texte'

Il y a probablement des blancs en fin de ligne du fichier texte, il faut les enlever via Titre= Titre.trim()

Code: Select all

    function Lecture_Titre_Texte() {// Lit le titre dans le fichier texte
            file = new File();
            file.open('C:/temp/out.txt', File.ReadOnly);
            Titre = file.readText().split('\n')[0];
            file.close();
           Titre= Titre.trim()
           Console.print("titre : >" + Titre + "<");       
            }
Francois
Sergent-Quentin
Posts: 274
Joined: 11 Jun 2014, 14:45

Re: [Résolu] Récupèrer une valeur dans un fichier ini ( code

Post by Sergent-Quentin »

Bonjour,

C'est exactement ce qu'il fallait :)

J'ai cherché sur internet, jamais entendu parler de trim() :shock:

J'avais essayé des trucs du genre :

https://openclassrooms.com/courses/dyna ... lieres-1-2
Blanc.jpg
Blanc.jpg (34.47 KiB) Viewed 4532 times
Je te remercie pour ta solution

Cordialement

Sergent-Quentin
User avatar
Jmgr
Admin
Posts: 1649
Joined: 07 Dec 2005, 15:45
Contact:

Re: [Résolu] Récupèrer une valeur dans un fichier ini ( code

Post by Jmgr »

Bug corrigé dans la version 3.9.2 : https://github.com/Jmgr/actiona/issues/47
"My software never has bugs. It just develops random features."
Post Reply