procedure TForm1.Button1Click(Sender: TObject);
var
sl: TStrings;
i: Integer; begin
for i := sl.Count - 1 downto 0 do
if Pos('T1=', sl[i]) = 0 then sl.Delete(i);
Memo1.Lines.Clear;
for i := 0 to sl.Count - 1 do Memo1.Lines.Append(sl.ValueFromIndex[i]);
Memo2.Text:=copy(memo3.Text,1,11);
end;
end.执行后会报这样错误! “Access violation at address 0044FBC3 in module 'Project2.exe'. Read of address 8BD88B67".. 怎么回事啊???
var
sl: TStrings;
i: Integer; begin
for i := sl.Count - 1 downto 0 do
if Pos('T1=', sl[i]) = 0 then sl.Delete(i);
Memo1.Lines.Clear;
for i := 0 to sl.Count - 1 do Memo1.Lines.Append(sl.ValueFromIndex[i]);
Memo2.Text:=copy(memo3.Text,1,11);
end;
end.执行后会报这样错误! “Access violation at address 0044FBC3 in module 'Project2.exe'. Read of address 8BD88B67".. 怎么回事啊???
加上这句
sl := TStringList.Create;
// 上面这句错了,
举个例子 比如: S1 有3个元素
i 的取值依次是:2,1,0
如果i=2 时 删除所有元素,
则在 i= 1 时
Pos('T1=', sl[i]) 就要报错误了. if Pos('T1=', sl[i]) = 0 then sl.Delete(i);