我使用的是Delphi XE7。有没有办法将.ini文件中的所有值加载到不同coloumns的stringgrid中?
我的.ini文件看起来像
[1038] AValue = a1 BValue = b1 CValue = c1 DValue = d1 [1031] AValue = a2 BValue = b2 CValue = c2 DValue = d2
我使用此程序填充网格:
procedure TForm1.ReadIntoGrid(const aIniFileName, aSection: string;
const aGrid: TStringGrid);
var
Ini: TIniFile;
SL: TStringList;
i: Integer;
begin
SL := TStringList.Create;
try
Ini := TIniFile.Create(aIniFileName);
try
aGrid.ColCount := 2;
Ini.ReadSectionValues(aSection, SL);
aGrid.RowCount := SL.Count;
for i := 0 to SL.Count - 1 do
begin
aGrid.Cells[0,i] := SL.Names[i];
aGrid.Cells[1,i] := SL.ValueFromIndex[i];
end;
finally
Ini.Free;
end;
finally
SL.Free;
end;
end;
工作正常,我明白了:
我的问题是...... 如何将所有截面值(1038和1031)读入1038值旁边的网格?值将一直固定。
答案 0 :(得分:4)
给你一些想法:
首先,我认为你应该在你的程序中添加一个参数:
procedure TForm1.ReadIntoGrid(const aIniFileName, aSection: string;
const aGrid: TStringGrid; const aColumn: Integer = 1);
其次,重写方法的这一部分:
for i := 0 to SL.Count - 1 do
begin
aGrid.Cells[0,i] := SL.Names[i];
aGrid.Cells[1,i] := SL.ValueFromIndex[i];
end;
替换为
for i := 0 to SL.Count - 1 do
begin
aGrid.Cells[0,i] := SL.Names[i];
aGrid.Cells[aColumn,i] := SL.ValueFromIndex[i];
end;
ps:显然你不必将值重写到第一列。
所以现在假设您正在调用这样的方法:
ReadIntoGrid('MyIniFile.ini','1038', MyGrid, 1);
ReadIntoGrid('MyIniFile.ini','1031', MyGrid, 2);