簡體   English   中英

從ini文件中讀取多個值到TCombobox中

[英]Read mutiple values from ini file into TCombobox

我有一個ini文件,其中包含以下內容:

[Colours]
1 = Red
2 = Blue
3 = Green
4 = Yellow

在我的應用程序中,我有一個TComboBox,我想用ini文件中的顏色填充。

有人知道我會怎么做嗎?

謝謝,

您可以使用TIniFile.ReadSection()獲取節中的名稱列表,然后進行迭代以獲取值:

procedure TForm1.LoadFile(const AFilename: String);
var
  I: TIniFile;
  L: TStringList;
  X: Integer;
  N: String;
  V: String;
begin
  I:= TIniFile.Create(AFilename);
  try
    L:= TStringList.Create;
    try
      ComboBox1.Items.Clear;
      I.ReadSection('Colours', L);
      for X := 0 to L.Count-1 do begin
        N:= L[X]; //The Name
        V:= I.ReadString('Colours', N, ''); //The Value
        ComboBox1.Items.Add(V);
      end;
    finally
      L.Free;
    end;
  finally
    I.Free;
  end;
end;

或者,您也可以將部分中的名稱/值對轉儲到單個TStringList並使用字符串列表的內置功能讀取每個值。

procedure TForm1.LoadFile(const AFilename: String);
var
  I: TIniFile;
  L: TStringList;
  X: Integer;
  N: String;
  V: String;
begin
  I:= TIniFile.Create(AFilename);
  try
    L:= TStringList.Create;
    try
      ComboBox1.Items.Clear;
      I.ReadSectionValues('Colours', L);
      for X := 0 to L.Count-1 do begin
        N:= L.Names[X]; //The Name
        V:= L.Values[N]; //The Value
        ComboBox1.Items.Add(V);
      end;
    finally
      L.Free;
    end;
  finally
    I.Free;
  end;
end;

順便說一句,Ini文件在=號的兩邊都沒有空格,除非您當然希望該空格作為實際名稱或值的一部分。

嘗試此操作,而無需兩次讀取文件:

uses IniFiles;

procedure TForm1.Button1Click(Sender: TObject);
var
  lIni : TIniFile;
  i: Integer;
begin
  lIni := TIniFile.Create('c:\MyFile.ini');
  try
    lIni.ReadSectionValues('Colours', ComboBox1.Items);
    for i := 0 to ComboBox1.Items.Count - 1 do
      ComboBox1.Items[i] := ComboBox1.Items.ValueFromIndex[i];
  finally
    FreeAndNil(lIni);
  end;
end;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM