如何正确地将.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.
答案 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
包含当前所选项目的文字。