Bonjour,
Je suis entrain de faire un petit exécutable qui contient un PopupMenu. Et je voudrais charger celui-ci à partir d'un fichier INI, et créer un objet pour chaque ligne du fichier INI et lorsque je clique sur cet objet je parcours le chemin contenu dans la valeur correspondante au 'caption' de l'objet.
Je voudrais alors savoir comment récupérer les clés d'un fichier INI et les valeurs qui leurs correspondent, je m'explique :
Mettons que mon fichier INI se compose comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
[Item]
PremierItem=ValeurItem1
SecondItem=ValeurItem2
[...]
PremierItem correspondrait au 'caption' de l'objet à créer, ValeurItem1 correspondrait au chemin à parcourir lorsque je clique sur PremierItem.

Voilà ma procédure servant à créer l'objet en question :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
procedure AjouterUnItem(PopupMenu:TMenuItem;FichierIniACharger,Section,Cle,default:String);
begin
  nomitem:=form5.edit1.Text;
  diritem:=Form5.edit2.Text;
  MenuItem:=TMenuItem.Create(PopupMenu);
  MenuItem.Caption:=Form5.edit1.text;
  PopupMenu.Add(MenuItem);
end;
La procédure de parcours du dossier :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
   form2.ListBox1.Items.Clear;
  Chemin := ;//Valeur du fichier ini
  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;
Et la procédure de récupération des clés et valeurs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
procedure traitement();
begin //PARTIE DE CREATION DU POPUPMENU
if not fileexists('F:\Documents de r3\Divers\Programmes\Dossiers\Lanceur\Menu.ini') then
begin
 ini:=TIniFile.Create('F:\Documents de r3\Divers\Programmes\Dossiers\Lanceur\Menu.ini');
 Ini.WriteString('FICHIER DU POPUPMENU', 'CE FICHIER NE DOIT EN AUCUN CAS ETRE SUPPRIME', '');
end
else begin
  ini:=TIniFile.Create('F:\Documents de r3\Divers\Programmes\Dossiers\Lanceur\Menu.ini');
  //C'est ici que je bloque. J'ai essayé de lire la section entiere avec "readsectionvalues" mais je n'ai pas le résultat espéré
  end;
end;
J'ai tout fais (Création de l'objet au bon endroit, affectation de l'évènement, inscription dans le fichier ini), il me manque juste à pouvoir le charger...
Quelqu'un aurait une idée ?
Merci d'avance.