2017-08-06 1 views
-4

Comment ajouter correctement des sections du fichier .ini à ComboBox, en fonction de la sélection dans les valeurs de la clé ComboBox affichées dans Label et shellExecute pour ouvrir la page Web sélectionnéeComment ajouter correctement des sections du fichier .ini à ComboBox

Mon fichier .ini

[Google] 
Adress=https://www.google.co.uk 
Description=Example description1 
[Ask] 
Adress=http://www.ask.com 
Description=Example description2 
[Bing] 
Adress=https://www.bing.com 
Description=Example description3 

Mon code:

var 
    Form1: TForm1; 
    INI: TIniFile; 
implementation 

procedure TForm1.Button4Click(Sender: TObject); 
begin 
    INI := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'setup.ini'); 
    try 
    INI.ReadSections(ComboBox1.Items); 
    finally 
    INI.Free; 
    end; 
end; 

procedure TForm1.ComboBox1Change(Sender: TObject); 
    var 
    AdressIni:string; 
    begin 
    AdressIni := INI.ReadString(ComboBox1.Items[ComboBox1.ItemIndex],'Adress', ''); 
    Label1.Caption := INI.ReadString(ComboBox1.Items[ComboBox1.ItemIndex],'Description', ''); 
    ShellExecute(handle, 'open', 'AdressIni', nil, nil, sw_shownormal); 
    end; 
end. 
+0

Vous essayez donc de remplir une zone de liste déroulante avec les données provenant d'un ini? –

+0

Oui. Et continuer à utiliser la valeur de la clé, comme dans le code – Arsik

+0

https://stackoverflow.com/q/9338283/62576 va vous montrer comment faire les parties combobox/inifile. –

Répondre

0

Vous passez des paramètres erronés à la procédure ShellExecute. Vous passez AdressIni sous forme de chaîne transmise en tant que premier paramètre (URL) au lieu de passer la référence à votre variable AdressIni.

Voici comment vous pouvez le faire:

procedure TForm3.ComboBox1Select(Sender: TObject); 
var AdressIni: string; 
begin 
    Ini := TIniFile.Create('D:\Proba.ini'); 
    try 
    //Form3.Caption := INI.ReadString(ComboBox1.Items[ComboBox1.ItemIndex],'Adress', ''); 
    AdressIni := INI.ReadString(ComboBox1.Text,'Adress',''); 
    Form3.Caption := AdressIni; 
    ShellExecute(handle, 'open', PCHAR(AdressIni), nil, nil, sw_shownormal); 
    finally 
    INI.Free; 
    end 
end; 

Notez que je lis ComboBox1.Text au lieu de ComboBox1.Items[ComboBox1.ItemIndex] depuis ComboBox1.Text contient du texte de l'article sélectionné.

+0

Pour ne pas travailler.Mais merci – Arsik

+0

Comment voulez-vous dire que cela ne fonctionne pas? J'ai testé cela sur mon ordinateur avant de poster et ça a bien fonctionné – SilverWarior

+0

Comment ça marche? si vous n'avez pas ajouté un fichier .ini à votre ComboBox? Quand j'ai ajouté, au lieu de la page WWW, la fenêtre du projet s'ouvre. Et Label n'affiche rien – Arsik