IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Lecture/écriture d'un fichier INI


Sujet :

WinDev

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 27
    Par défaut Lecture/écriture d'un fichier INI
    Bonjour à tous!

    Je dois faire un petit programme permettant de lister les fichiers INI dans le répertoire en cours et de les afficher dans une combo (jusque la ca va).

    Ensuite en fonction du fichier sélectionné, on peut l'afficher dans un libellé (ou un champ de saisie mais je sais pas si on peut) en cliquant sur un bouton "Ouvrir".

    Puis, en cliquant sur un bouton "Modifier" on va pouvoir modifier le contenu du fichier INI en ajoutant des lignes entrée manuellement via mon programme (vous l'aurez deviné ^^).

    Enfin il y aura un 3eme bouton pour la sauvegarde.

    Code de la combo :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Fichier est une chaîne
    //  Les fichiers .ini présents dans le répertoire "C:\Mes Projets\ModifFichier\"
    //  sont affichés dans la liste "COMBO"
    Fichier = fRep("C:\Mes Projets\ModifFichier\*.ini", frFichier)
    TANTQUE Fichier <> ""
    	ListeAjoute(COMBO, Fichier)
    	Fichier =  fRep("",  frFichier)
    FIN
    Pour mon bouton "Ouvrir" j'ai tenté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ListeValeurs est une chaîne = LIB_ini //LIB_ini est le libellé ou s'affichera le contenu de l'INI
     
    SI COMBO = "Ana_prep.ini" ALORS 
    	sListeValeurs = INILit("PREPA","base_logistique","","C:\Mes Projets\ModifFichier\Ana_prep.ini") 
    FIN
    Mais rien de bien concluant... Mais je pense qu'il manque des trucs...

    Merci!

  2. #2
    Membre éclairé
    Inscrit en
    Avril 2009
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 308
    Par défaut
    Essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Combo[Combo] ou combo[listeselect(combo)]
    pour être sur la ligne sélectionnée de ton combo.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 27
    Par défaut
    Ok mais le problème c'est que j'ai plusieurs fichiers INI qui n'ont pas le même contenu, donc dans les paramètres après INILit ca va changer d'un fichier à l'autre...

    Voila pourquoi je pensais faire SI ... SINON... SI...

  4. #4
    Membre éclairé
    Inscrit en
    Avril 2009
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 308
    Par défaut
    Va falloir à un moment donné que tu gère chaque cas, soit ta une table ou tu stocke par exemple pour chaque fichier quels sont ses paramètres, soit en gérant ça dans le code selon le fichier sélectionné dans ton combo.

    Edit : Fait plutôt un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Selon Combo[combo]
    <div style="margin-left:40px">
    Cas ="init_1"
    Cas="init_2"
    Cas="init_3"</div>Fin

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 27
    Par défaut
    Du coup j'ai tenté de mettre ca dans "Sélection d'une ligne de COMBO":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    LIB_ini =INILit("??","??","","C:\Mes Projets\ModifFichier\"+COMBO) // ligne 1
     
    // OU
     
    LIB_ini =fOuvre("C:\Mes Projets\ModifFichier\"+COMBO) // ligne 2
    Mais si je met la ligne 1 rien ne s'affiche, et si je met la ligne 2 j'ai un "-1" dans mon libellé!

    Mais aussi je sais pas ce que je dois mettre la place des "??" car ca change a chaque fichier.

    Je débute dans WinDev et ça me fais des nœuds au cerveau tout ca ><

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 69
    Par défaut
    Bonjour,

    Pourquoi ne pas les gérer comme des fichiers textes?
    En utilisant les fonctions fChargeTexte() et fSauveTexte().
    C'est sans doute une approche diférente et je ne sais pas si elle est suffisante...

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 27
    Par défaut
    Ca fonctionne uniquement pour les fichiers txt :/

  8. #8
    Membre Expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 915
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 915
    Par défaut
    Bonjour,

    Dans un premier temps as tu essayé de faire un trace sur la valeur de COMBO.
    Ca te permettra de voir si tu récupère bien le nom de ton fichier ini.

    ensuite dans ton code suivant
    LIB_ini =INILit("??","??","","C:\Mes Projets\ModifFichier\"+COMBO) // ligne 1

    // OU

    LIB_ini =fOuvre("C:\Mes Projets\ModifFichier\"+COMBO) // ligne 2
    regarde l'aide de inilit et de fouvre

    tu verra que fouvre te revoie un entier
    et que ta syntaxe de inilit n'est pas correcte.

    Le premier réflexe avant de demander de l'aide c'est regardé l'aide.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 69
    Par défaut
    Vous pouvez utiliser cette fonction avec les fichiers ini, je viens de vérifier en WD16 et cela fonctionne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FEN_Principale.SAI_SansNom1 =fChargeTexte("c:\test\install.ini")
    Bon travail...

  10. #10
    Membre émérite Avatar de wimbish
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 416
    Par défaut
    Bonjour,

    Utilise "COMBO..ValeurAffichée" ou "COMBO..ValeurMémorisée" si tu la remplis avec un glien(valeur).

  11. #11
    Membre Expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 915
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 915
    Par défaut
    Par contre il faut que tu définisse si tu veux juste afficher le fichier ini dans un champ de saisie : ce qui permet de voir le fichier ini comme dans le bloc note, ainsi tu peux le modifier et l'enregistrer.

    Ou si tu veux faire un assistant de modification des fichier ini :
    tu as une table avec la liste des sections, des mots clé et des valeurs.
    Dans ce cas tu pourra ajouter une nouvelle ligne dans table avec le contrôle que tous les champs sont bien renseignés.

    Ce qui te permettra d'avoir toujours un fichier ini avec la bonne structure de fichier ini

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 27
    Par défaut
    Merci cgr_007, ta solution marche très bien!

    @mail.spam : Ta 2eme solution m'a l'air pas mal, car effectivement une fois le fichier ouvert (dans un champ de saisie pour le moment), je dois pouvoir le sauvegarder si j'ai modifié ou ajouté des trucs mais ca m'a l'air un peu compliqué a réaliser :s
    En gros si j'ai compris, tu veux ouvrir le fichier ini dans un tableau ou chaque section/mot clé/valeur correspondront a une colonne? (genre fichier csv)

    Mais sinon la 1ere solution plus simple a l'air bien aussi.

  13. #13
    Membre Expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 915
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 915
    Par défaut
    En gros oui c'est le principe du CSV
    Tu retranscrit ton fichi ini
    Exemple de fichier .INI

    [Exemples WD]
    Nom1 = Wdinstall
    Nom2 = WDBench

    [Description du projet WDInstall]
    Libellé = Utilisez le panneau de configuration de Windows
    LST = 43
    Page = 12
    tu aura à l'écran une table

    Section motclé valeur
    Exemples WD Nom1 Wdinstall
    Exemples WD Nom2 WDBench
    Description du projet WDInstall Libellé Utilisez le panneau de configuration de Windows
    Description du projet WDInstall LST 43
    Description du projet WDInstall Page 12
    L'avantage de cette solution tu n'aura pas d'erreur pour l'oublie d'un "]"

    Tout dépend qui dois modifier ton fichier ini. si c'est un informaticien ou pas.
    Si c'est toi tu as la solution d'voir un bouton visualisation du fichier ini (avec l'utilisation de "FEN_Principale.SAI_SansNom1 =fChargeTexte("c:\test\install.ini")" comme le dis cgr_007
    et tu peux ajouter un bouton modif avec le code de lanceappli ou lanceappliassocié qui te permet d'ouvrir le bloc-note et ainsi ne pas gérer l'enregistrement de ton fichier.


    Tu sais parfois les solutions les plus simples ne le sont pas toujours avec le temps.
    En plus ça va te permettre de te former sur les traitements possibles sur un champ table. (ce qui à mon avis te sera utile dans le temps si tu compte utiliser windev. (Mais ce n'est que mon avis)

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 27
    Par défaut
    Ok je vais tester ca, merci!

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 27
    Par défaut
    Bon, j'ai fais autrement mais ca marche.

    Par contre j'ai un petit soucis, pour rechercher les fichiers INI dans un répertoire j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    Fichier est une chaîne
     
    //  Les fichiers .ini présents dans le répertoire "C:\Mes Projets\ModifFichier\" sont affichés dans la liste de la combo "COMBO"
     
    Fichier = fRep("C:\Mes Projets\ModifFichier\*.ini", frFichier)
     
    TANTQUE Fichier <> ""
    	ListeAjoute(COMBO, Fichier)
    	Fichier =  fRep("",  frFichier)
    FIN
    Et j'aimerai que mon programme trouve tout les fichiers INI qui sont dans le répertoire ou son .exe est.

    J'ai testé diverses combinaisons avec fRepEnCours mais ca marche pas...

  16. #16
    Membre Expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 915
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 915
    Par défaut
    il faut que tu utilise fRepExe.
    Mais pense à chercher dans l'aide.
    Car si je cherche dans l'aide "répertoire", il y a une ligne qui est "Connaître le répertoire d'un EXE".

    est ton ami

Discussions similaires

  1. [WD15] Lecture et écriture d'un fichier INI
    Par bestmoroco dans le forum WinDev
    Réponses: 10
    Dernier message: 17/10/2012, 17h34
  2. lecture/écriture dans un fichier
    Par benkunz dans le forum Langage
    Réponses: 3
    Dernier message: 10/04/2007, 11h35
  3. Réponses: 47
    Dernier message: 28/01/2007, 19h39
  4. lecture écriture dans un fichier
    Par poukill dans le forum C++
    Réponses: 9
    Dernier message: 23/05/2006, 11h02
  5. [PERL] Problème lecture/écriture dans un fichier
    Par LE NEINDRE dans le forum Langage
    Réponses: 4
    Dernier message: 17/08/2005, 13h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo