如何正确地将.ini文件的各个部分添加到ComboBox

时间:2017-08-06 16:02:18

标签: delphi ini

如何正确地将.ini文件的各个部分添加到ComboBox,具体取决于Label和shellExecute中显示的ComboBox键值中的选择以打开所选的网页

我的.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

我的代码:

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.

1 个答案:

答案 0 :(得分:0)

您将错误的参数传递给ShellExecute程序。您传递AdressIni作为第一个参数(URL)传递的字符串,而不是传递对AdressIni变量的引用。

以下是如何做到这一点:

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;

请注意,我正在阅读ComboBox1.Text而不是ComboBox1.Items[ComboBox1.ItemIndex],因为ComboBox1.Text包含当前所选项目的文字。