Lire une valeur dans un fichier INI [Résolu]

Signaler
Messages postés
8
Date d'inscription
mardi 13 mars 2007
Statut
Membre
Dernière intervention
9 avril 2008
-
Messages postés
8
Date d'inscription
mardi 13 mars 2007
Statut
Membre
Dernière intervention
9 avril 2008
-
    Bonjour,
J'ai un problème avec mon projet, en quelques mots :
C'est un petit logiciel qui me permet de lancer des vidéos, des images... à partir d'un TPopUpMenu.
Pour ce faire, j'ai besoin de créer dynamiquement les objets de mon popupmenu (ceci est fait), ces objets sont inscrits dans un fichier INI (sous la forme Nom_de_l_objet=Chemin_de_l_objet).
Je dois alors lire le fichier INI à la création de ma forme afin de recréer les objets précédements ajoutés (cela est aussi fait ).
Lorsque je clique sur un objet créé dynamiquement j'exécute un évènement que j'ai créé ;
Procedure TForm5.AjoutClic(Sender: TObject);
var
  nom: string;
  chemin: string;
Begin
  //RECHERCHE DANS LE INI DE LA CLE 'chemin', RECUPERER LA VALEUR
  ini:=TIniFile.Create('F:\Documents de r3\Divers\Programmes\Dossiers\Lanceur\Menu.ini'); //ouverture du INI
  form2.ListBox1.Items.Clear; //effacement de la listbox
  nom:=TmenuItem(sender).Caption; //la valeur de la variable est bonne 
  chemin:=ini.ReadString('Items', nom, 'F:\'); //la variable chemin contient tout le temps la valeur 'F:\'
  //showmessage('chemin : '+chemin);
//inscription des fichiers trouvés dans la listbox
  If FindFirst(chemin+'*.*',faAnyFile,Info)=0 Then
  Begin
    Repeat
      If (Info.Attr And faDirectory)=0
        Then form2.ListBox1.Items.Add(Info.FindData.cFileName);  //affichage des fichier
    Until FindNext(Info)<>0;
  FindClose(Info);
  End;
  ini.Free;
End;

 mais mon problème survient lors de l'affectation de la valeur contenu dans le INI à la variable 'chemin', la variable 'chemin' contient tout le temps la valeur 'F:\'. je ne vois pas ce qu'il peut se passer .
Si vous avez une idée, elle est la bienvenue =D
Merci d'avance !

6 réponses

Messages postés
8
Date d'inscription
mardi 13 mars 2007
Statut
Membre
Dernière intervention
9 avril 2008

Bonjour à tous,
Mon problème est réglé :
http://www.developpez.net/forums/showthread.php?t=520344
Merci de votre écoute
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
toi 89 ans et moi 107 donc..

chemin:=ini.ReadString('Items', nom, 'F:\'); //la variable chemin

'F:\', c'est la valeur par défaut du ReadString..

c'est-à-dire si :

la section n'existe pas ;
la clé n'existe pas ;
la valeur de données n'a pas été affectée pour la clé.

çà devrait t'aider..

cantador
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
et 'F:\'  n'est pas une variable

cantador
Messages postés
8
Date d'inscription
mardi 13 mars 2007
Statut
Membre
Dernière intervention
9 avril 2008

Salut Cantador,
Effectivement tu as raison, la section "Items" n'existe pas dans mon fichier INI, par contre la section "Item" existe bel et bien, je viens de corriger cette erreur mais malheureusement j'ai toujours le même problème...

chemin:=ini.ReadString('Items', nom, 'F:\');

La fonction affecte une valeur par défaut 'F:\' qui est renvoyé si la section ou la clé n'existe pas ou si il n'y a pas de valeur affectée à la clé. Tu dois te trouver dans un de ces cas de figure et donc tu récupères ta valeur par défaut.
Messages postés
8
Date d'inscription
mardi 13 mars 2007
Statut
Membre
Dernière intervention
9 avril 2008

Tu as raison, j'avais oublié de la préciser mais la variable 'nom' a une valeur qui existe, puisqu'elle est le caption de l'objet cliqué; ce caption existe dans le fichier INI puisque le caption de l'objet est chargé dynamiquement avec le  fichier INI
si ce n'est toujours pas très clair pour vous : http://www.developpez.net/forums/showthread.php?t=520344

Merci d'avance =D