【发布时间】:2011-07-29 01:37:03
【问题描述】:
代码的第一部分可以正常工作,而第二部分(已注释)则不行。 它会覆盖我的 A1 文件,尽管它应该写入 A2。
procedure TForm1.AdvGlowButton12Click(Sender: TObject);
var
i,j: Integer;
Seznam: TStrings;
ApplicationPath: string;
begin
if (cxRadiogroup3.ItemIndex and cxRadiogroup2.ItemIndex) = 0 then begin
ApplicationPath:= ExtractFileDir(Application.ExeName);
Seznam:= TStringList.Create;
try
for i:=0 to advStringGrid2.ColCount-1 do
Seznam.AddStrings(advStringGrid2.Cols [i]);
for i:=0 to advStringGrid2.rowCount-1 do
Seznam.AddStrings(advStringGrid2.rows [j]);
Seznam.SaveToFile(ApplicationPath+'\A1.txt');
finally
seznam.free;
end;
end ;
//if cxRadiogroup3.ItemIndex = 1 and cxRadiogroup2.ItemIndex = 0 then begin
// ApplicationPath:= ExtractFileDir(Application.ExeName);
// Seznam:= TStringList.Create;
// try
// for i:=0 to advStringGrid2.ColCount-1 do
// Seznam.AddStrings(advStringGrid2.Cols [i]);
// for i:=0 to advStringGrid2.rowCount-1 do
// Seznam.AddStrings(advStringGrid2.rows [j]);
// Seznam.SaveToFile(ApplicationPath+'\A2.txt');
// finally
// seznam.free;
// end ;
//end
end;
我做错了什么? 另外,当我尝试从空文本文件中加载内容时,为什么 stringgrid 会超出 listindex 的范围?如果我稍后将空字符串网格保存到该文件中,尽管文件中没有任何内容,但它不会抱怨吗?奇怪……
这就是我将 A1 和 A2 加载到字符串网格中的方式。
procedure TForm1.cxRadioGroup2Click(Sender: TObject);
Var
I,j,k: Integer;
Seznam: TStrings;
ApplicationPath: string;
begin
case cxradioGroup2.ItemIndex of
0: begin
if cxradioGroup3.ItemIndex = 0 then begin
Seznam:= TStringList.Create;
AdvStringgrid2.ClearAll;
try
Seznam.LoadFromFile('A1.txt');
k:= 0;
for i:=0 to advStringGrid2.ColCount-1 do
for j:=0 to advStringGrid2.RowCount-1 do begin
advstringGrid2.Cells [i,j]:= Seznam.Strings [k];
Inc(k);
end;
finally
seznam.free;
end;
end;
if cxradioGroup3.ItemIndex = 1 then begin
Seznam:= TStringList.Create;
AdvStringgrid2.ClearAll;
try
Seznam.LoadFromFile('A2.txt');
k:=0;
for i:=0 to advStringGrid2.ColCount-1 do
for j:=0 to advStringGrid2.RowCount-1 do begin
advstringGrid2.Cells [i,j]:= Seznam.Strings [k];
Inc(k);
end;
finally
seznam.free;
end;
end;
end;
end;
end;
【问题讨论】:
-
在有人告诉你为什么它报告索引错误之前,你需要显示你的加载代码。
-
以上代码已更新...
-
ClearAll() 是否删除行,或者只是将它们设置为空字符串?如果它删除了行,那么您需要将 ColCount 和 RowCount 存储到您的文件中,以便您可以在加载单元格数据之前恢复原始值。无论如何,这可能不是一个坏主意。
-
保存数据时,您存储的是 Rows[] 属性中的值,但在读取值时使用的是 Cells[] 属性。保存值时应该使用 Cells[] 属性。
-
究竟如何?不知道我理解你的正确....(累)...
标签: delphi delphi-7 delphi-2010 delphi-xe