BeyondStudio(Alan) 的太复杂了!我的: procedure TForm1.FormCreate(Sender: TObject); var i : integer ; name : array[1..4] of string ; myini : Tinifile ; begin myini:=Tinifile.create('d:\name.ini'); name[1]:=myini.readstring('1','name','1'); name[2]:=myini.readstring('2','name','2'); name[3]:=myini.readstring('3','name','3'); name[4]:=myini.readstring('4','name','4'); for i:=1 to 4 do ComboBox1.Items.Add(name[i]) ;end;
增加了就照着上面的样子添加,减少了就删除。呵呵。 楼上的 myini 没有释放吧?
****************************************************** 可是我还有个问题,那就是我的 [1] name=1 [2] name=2 . . . 不是固定的啊,有可能会增加,也可能会减少啊,怎么样子才能做到? ************************************************* 我的方法: procedure TForm1.FormCreate(Sender: TObject); var i : integer ; name : array[1..1000] of string ;//也可定义为动态数组,根据需要定义其大小 myini : Tinifile ; begin myini:=Tinifile.create('d:\name.ini'); for i:=1 to 1000 do begin if not myini.SectionExists(intTostr(i)) then break ; name[i]:=myini.readstring(intTostr(i),'name','1'); ComboBox1.Items.Add(name[i]) ; end ; myini.Free ; end;
ini文件的格式: -------------- [main] count=4[1] name=1 [2] name=2 [3] name=3 [4] name=4引用楼上的代码: --------------- procedure TForm1.FormCreate(Sender: TObject); var i: integer; count: integer; // name: array[1..1000] of string ;//也可定义为动态数组,根据需要定义其大小 myini: Tinifile; begin myini := Tinifile.create('d:\name.ini'); count := myini.ReadInteger('main','count',0); for i:=1 to count do begin ComboBox1.Items.Add(myini.ReadString(IntToStr(i),'name','null'); end ; myini.Free ; end;
procedure TForm1.Button1Click(Sender: TObject); var Ini: TIniFile; SectionList: TStringList; I: Integer; begin SectionList := TStringList.Create; Ini := TIniFile.Create('setting.ini'); Ini.ReadSections(SectionList); ComboBox1.Items.Clear; for I := 0 to SectionList.Count - 1 do begin Combobox1.Items.Add(Ini.ReadString(SectionList[I], 'Name', '')); end; Ini.Free; SectionList.Free; end;
Classes, SysUtils, IniFiles, Forms, Windows;const
csIni1Section = '1';
csIni2Section = '2';
csIni3Section = '3';
csIni4Section = '4'; {Section: 1}
csIni1name = 'name'; {Section: 2}
csIni2name = 'name'; {Section: 3}
csIni3name = 'name'; {Section: 4}
csIni4name = 'name';type
TIniOptions = class(TObject)
private
F1name: Integer; F2name: Integer; F3name: Integer; F4name: Integer;
public
procedure LoadSettings(Ini: TIniFile);
procedure SaveSettings(Ini: TIniFile); property 1name: Integer read F1name write F1name;
property 2name: Integer read F2name write F2name;
property 3name: Integer read F3name write F3name;
property 4name: Integer read F4name write F4name;
end;var
IniOptions: TIniOptions = nil;implementationprocedure TIniOptions.LoadSettings(Ini: TIniFile);
begin
if Ini <> nil then
begin
F1name := Ini.ReadInteger(csIni1Section, csIni1name, 1);
F2name := Ini.ReadInteger(csIni2Section, csIni2name, 2);
F3name := Ini.ReadInteger(csIni3Section, csIni3name, 3);
F4name := Ini.ReadInteger(csIni4Section, csIni4name, 4);
end;
end;procedure TIniOptions.SaveSettings(Ini: TIniFile);
begin
if Ini <> nil then
begin
Ini.WriteInteger(csIni1Section, csIni1name, F1name);
Ini.WriteInteger(csIni2Section, csIni2name, F2name);
Ini.WriteInteger(csIni3Section, csIni3name, F3name);
Ini.WriteInteger(csIni4Section, csIni4name, F4name);
end;
end;initialization
IniOptions := TIniOptions.Create;finalization
IniOptions.Free;end.
property 1name: Integer read F1name write F1name;
property 2name: Integer read F2name write F2name;
property 3name: Integer read F3name write F3name;
property 4name: Integer read F4name write F4name;
应该改为
property name1: Integer read F1name write F1name;
property name2: Integer read F2name write F2name;
property name3: Integer read F3name write F3name;
property name4: Integer read F4name write F4name;使用如下:
Combobox1.Items.Add(IniOptions.name1);
Combobox1.Items.Add(IniOptions.name2);
Combobox1.Items.Add(IniOptions.name3);
Combobox1.Items.Add(IniOptions.name4);
[1]
name=1
[2]
name=2
.
.
.
不是固定的啊,有可能会增加,也可能会减少啊,怎么样子才能做到?
procedure TForm1.FormCreate(Sender: TObject);
var
i : integer ;
name : array[1..4] of string ;
myini : Tinifile ;
begin myini:=Tinifile.create('d:\name.ini');
name[1]:=myini.readstring('1','name','1');
name[2]:=myini.readstring('2','name','2');
name[3]:=myini.readstring('3','name','3');
name[4]:=myini.readstring('4','name','4');
for i:=1 to 4 do
ComboBox1.Items.Add(name[i]) ;end;
楼上的 myini 没有释放吧?
可是我还有个问题,那就是我的
[1]
name=1
[2]
name=2
.
.
.
不是固定的啊,有可能会增加,也可能会减少啊,怎么样子才能做到?
*************************************************
我的方法:
procedure TForm1.FormCreate(Sender: TObject);
var
i : integer ;
name : array[1..1000] of string ;//也可定义为动态数组,根据需要定义其大小
myini : Tinifile ;
begin
myini:=Tinifile.create('d:\name.ini'); for i:=1 to 1000 do
begin
if not myini.SectionExists(intTostr(i)) then
break ;
name[i]:=myini.readstring(intTostr(i),'name','1');
ComboBox1.Items.Add(name[i]) ;
end ;
myini.Free ;
end;
--------------
[main]
count=4[1]
name=1
[2]
name=2
[3]
name=3
[4]
name=4引用楼上的代码:
---------------
procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;
count: integer;
// name: array[1..1000] of string ;//也可定义为动态数组,根据需要定义其大小
myini: Tinifile;
begin
myini := Tinifile.create('d:\name.ini');
count := myini.ReadInteger('main','count',0); for i:=1 to count do
begin
ComboBox1.Items.Add(myini.ReadString(IntToStr(i),'name','null');
end ; myini.Free ;
end;
var
Ini: TIniFile;
SectionList: TStringList;
I: Integer;
begin
SectionList := TStringList.Create;
Ini := TIniFile.Create('setting.ini');
Ini.ReadSections(SectionList);
ComboBox1.Items.Clear;
for I := 0 to SectionList.Count - 1 do
begin
Combobox1.Items.Add(Ini.ReadString(SectionList[I], 'Name', ''));
end;
Ini.Free;
SectionList.Free;
end;