Var
i : Integer;
j : Integer;
oSLArray : array of TStringList;
oSL : TStringList;
begin
SetLength(oSLArray, emailPassword.Lines.Count);
for i := 0 to emailPassword.Lines.Count - 1 do
{oSLArray[i] := TStringList.Create;
oSLArray[i].Delimiter := ' ';
oSLArray[i].DelimitedText := emailPassword.Lines[i];
for j := 0 to oSLArray[i].Count-1 do begin
Showmessage( oSLArray[i].Strings[j] );
end; }
oSL := TStringList.Create;
oSL.Delimiter := ' ';
oSL.DelimitedText := emailPassword.Lines[i];
for j := 0 to oSL.Count-1 do begin
Showmessage( oSL[j] );
end;
end;我正在尝试生成一个TStringLists数组,读取来自RichEdit 'EmailPassword‘的内容,然后打印它(当我做到这一点时,我将把它放在一个数组中)。
当我取消注释掉oSLarray时,我得到一个访问冲突。当我在oSL上尝试时,什么也没有打印出来。
现在,我理解访问冲突意味着指针可能未正确设置,因为我认为访问冲突发生在oSLArrayi := TStringList.Create上。
我是不是漏掉了什么小东西?
发布于 2011-10-13 22:17:58
我已经更正了代码,我相信这段代码会工作,但我只是在脑海中测试过它。
var
i : Integer;
j : Integer;
oSLArray : array of TStringList;
oSL : TStringList;
begin
if not(Assigned(emailpassword)) then exit;
SetLength(oSLArray, emailPassword.Lines.Count);
for i := 0 to emailPassword.Lines.Count - 1 do begin
oSLArray[i] := TStringList.Create;
oSLArray[i].Delimiter := ' ';
oSLArray[i].DelimitedText := emailPassword.Lines[i];
for j := 0 to oSLArray[i].Count-1 do begin
Showmessage( oSLArray[i].Strings[j] ); <<--- The error has here
end; {for j}
end; {for i}
//oSL := TStringList.Create;
//try
// oSL.Delimiter := ' ';
// oSL.DelimitedText := emailPassword.Lines[i];
// for j := 0 to oSL.Count-1 do begin
// Showmessage( oSL[j] );
// end; {for j}
//finally
// oSL.Free;
//end; {try}
//end; {for i}
end;以下是带有注释的旧代码:
for i := 0 to emailPassword.Lines.Count - 1 do //don't forget begin
oSLArray[i] := TStringList.Create;
oSLArray[i].Delimiter := ' ';
oSLArray[i].DelimitedText := emailPassword.Lines[i];
//<<<-- Here for i loop should end, but it does not.
for j := 0 to oSLArray[i].Count-1 do begin
//You loop though all members of OSLArtray, even though only the first item is set,
//the rest is unassigned.
Showmessage( oSLArray[i].Strings[j] ); <<-- Access Violation
end; } 发布于 2011-10-13 22:31:57
缺少开始/结束对是问题所在。如果没有注释,
for i := 0 to emailPassword.Lines.Count - 1 do循环只迭代行
oSLArray[i] := TStringList.Create;这条线
oSLArray[i].Delimiter := ' '; 在循环之后执行。
https://stackoverflow.com/questions/7755342
复制相似问题