将所有部分 .ini 值读入 stringgrid
Read all section .ini values into stringgrid
我用的是Delphi XE7。有什么方法可以将 .ini 文件中的所有值加载到不同列的 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 值旁边的网格中?值将始终固定。
给你一些想法:
首先,我认为您应该在程序中添加一个参数:
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);
我用的是Delphi XE7。有什么方法可以将 .ini 文件中的所有值加载到不同列的 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 值旁边的网格中?值将始终固定。
给你一些想法:
首先,我认为您应该在程序中添加一个参数:
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);