Консультация № 111329
28.11.2007, 08:13
0.00 руб.
0 2 2
Здравствуйте эксперты.
Как реализовать вот такое?
У меня есть ини файл со структурой:
[function]
[1]
name=
param1=
param12=
[2]
name=
param1=
param12=
Как бы загрузить всё секцию [function] в комбобокс , что бы отображалось только name и при этом, при выделении, в memo1 отображались param1= param12= выбранного элемента комбобокса? - Если можно в примере.

Обсуждение

Неизвестный
28.11.2007, 09:22
общий
это ответ
Здравствуйте, Gavrila!
Предлогаю вам сделать следующее
На форме расположить несколько лист бохов для вашего примера хватит 3х сделать их невидимыми а дальше воспользоватся 3мя свойствами ini

ReadSections - возвращает названия всех секций
ReadSection - возвращает метки внутри секции
ReadSectionValues - возвращает секцию и имя

далее всё просто см приложение

и не забудте подключить модуль IniFiles в Units;



Приложение:
ini : TIniFile; i,j : integer; inifile : string; section : string; value : string;begin Ini := TIniFile.Create(extractfilepath(‘путь до файла‘)+‘имя файла.ini‘); ini.ReadSections(ListBox1.Items); for i := 0 to ListBox1.Items.Count-1 do begin Ini.ReadSection(ListBox1.Items.Strings[i],ListBox2.Items); for j := 0 to ListBox2.Items.Count - 1 do if j = 0 then Combobox1.Items.Add(ini.ReadString(ListBox1.Items.Strings[i],ListBox2.Items.Strings[j],‘‘)) else begin ini.ReadSectionValues(ListBox1.Items.Strings[i],ListBox3.Items); Combobox1.Items.Add(ListBox3.Items.Strings[j]); end; end;end;
Неизвестный
29.11.2007, 22:40
общий
это ответ
Здравствуйте, Gavrila!
Если вы измените формат файла на указанный в приложении, то можно использовать следующий, довольно простой код.

procedure TForm1.FormCreate(Sender: TObject);
var f: TIniFile;
begin
f := TiniFile.Create(‘functions.ini‘);
f.ReadSections(ListBox1.Items);
f.Free;
end;

procedure TForm1.ListBox1Click(Sender: TObject);
var f: TIniFile;
begin
f := TiniFile.Create(‘functions.ini‘);
f.ReadSectionValues(ListBox1.Items[ListBox1.ItemIndex], Memo1.Lines);
f.Free;
end;

Приложение:
[name1]param1=param12=[name2]param1=param12=
Форма ответа