我初学Delphi ,有段程序如下:
var 
  slTmp : TStringList ;
begin
  slTmp := TStringList.Create;
  slTmp := TStringList( Memo.Lines ) ;
  if slTmp.Strings[0] <> 'BEGIN' then
   begin
     ......  
   end;
......  
end;
第一次执行没有问题,但是再次执行时,在判断语句处出错,这是怎么回事啊?

解决方案 »

  1.   

    我在程序后面slTmp.Free 了的
      

  2.   

    var 
      slTmp : TStringList ;
    begin
      slTmp := TStringList.Create;
      slTmp.Clear 
      try 
        slTmp := TStringList( Memo.Lines ) ;
        if slTmp.Strings[0] <> 'BEGIN' then
        begin
          ......  
        end;
        ......  
      finally
        slTmp.Clear ;
        slTmp.Free ;
      end ;
    end;
      

  3.   

    slTmp := TStringList.Create;这一行不要
      

  4.   

    你是怎么FREE的?要不这样:
    if not Assigned(slTmp) then slTmp := TStringList.Create;
      

  5.   

    slTmp := TStringList( Memo.Lines ) ;把这句改一下怎么样?  slTemp.Assign(Memo.Lines);
      

  6.   

    slTmp := TStringList( Memo.Lines ) 
    有什么用?
    这样:
    sltmp.text:=memo1.lines.text;
    还有,你说第二次运行到sltmp.strings[0]的时候就出错?如果是"list index out of bounds -1"那么就有可能是memo的内容发生了变化,根本就没有内容,以至于sltmp连一行都没有。
      

  7.   

    stanely(俺是邢她汉子) 大哥,你真他妈的牛鼻 , 
    sltmp.text:=memo1.lines.text; 是完全正确的,
    就算用slTmp := TStringList( Memo.Lines ),运行正确
    但是关闭程序时, 会出现错误,呵呵,象你这么一改,就完全正确
    马上给分,每人100, 你另加100 , Thank !