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".. 怎么回事啊???

解决方案 »

  1.   

    sl没有初始化
    加上这句
    sl := TStringList.Create;
      

  2.   

     for   i   :=   sl.Count   -   1   downto   0   do 
    // 上面这句错了,  
    举个例子 比如: S1 有3个元素 
    i 的取值依次是:2,1,0
    如果i=2 时 删除所有元素,
    则在 i= 1 时    
     Pos('T1=',   sl[i])  就要报错误了.  if   Pos('T1=',   sl[i])   =   0   then   sl.Delete(i);