Lire une valeur dans un fichier INI

Résolu
cs_bionicleman Messages postés 8 Date d'inscription mardi 13 mars 2007 Statut Membre Dernière intervention 9 avril 2008 - 8 avril 2008 à 18:59
cs_bionicleman Messages postés 8 Date d'inscription mardi 13 mars 2007 Statut Membre Dernière intervention 9 avril 2008 - 9 avril 2008 à 12:27
    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

cs_bionicleman Messages postés 8 Date d'inscription mardi 13 mars 2007 Statut Membre Dernière intervention 9 avril 2008
9 avril 2008 à 12:27
Bonjour à tous,
Mon problème est réglé :
http://www.developpez.net/forums/showthread.php?t=520344
Merci de votre écoute
3
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 14
8 avril 2008 à 19:29
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
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 14
8 avril 2008 à 19:30
et 'F:\'  n'est pas une variable

cantador
0
cs_bionicleman Messages postés 8 Date d'inscription mardi 13 mars 2007 Statut Membre Dernière intervention 9 avril 2008
8 avril 2008 à 20:11
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...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
8 avril 2008 à 20:49
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.
0
cs_bionicleman Messages postés 8 Date d'inscription mardi 13 mars 2007 Statut Membre Dernière intervention 9 avril 2008
8 avril 2008 à 22:14
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
0