我的INI文件中有以下的信息:
[1]
name=1
[2]
name=2
[3]
name=3
[4]
name=4
我想在Combobox1中显示name的值,请问各位应该如何做到?

解决方案 »

  1.   

    unit Unit1;interfaceuses
      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.
      

  2.   

    对不起,上面的
        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);
      

  3.   

    可是我还有个问题,那就是我的
    [1]
    name=1
    [2]
    name=2
    .
    .
    .
    不是固定的啊,有可能会增加,也可能会减少啊,怎么样子才能做到?
      

  4.   

    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;
      

  5.   

    增加了就照着上面的样子添加,减少了就删除。呵呵。
    楼上的 myini 没有释放吧?
      

  6.   

    ******************************************************
    可是我还有个问题,那就是我的
    [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;
      

  7.   

    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;
      

  8.   

    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;
      

  9.   

    BeyondStudio(Alan) 差点把我吓了,什么时候delphi支持这样的命名规则了