function GetHRef(s: string): TStrings;
begin
  Result := TStringList.Create;
  Result.Add('ab');  //<-----  出错在这里:Access violation at address XXXXXX
  Result.Add('bcd');
end;

解决方案 »

  1.   

    楼上说得没错。还有
    procedure TForm1.Button3Click(Sender: TObject);
    var
      sl: TStrings;
    begin
      sl:= TStringList.Create;      //这一句要去掉,不然会有内存泄漏
      try
          
      

  2.   

    Result创建后不用释放么?

    Result := TStringList.Create;
    就可以了么?
      

  3.   

    类型应该一致吧?
    sl:= TStringList.Create;
    S1声明为TStrings,但却等于TStringList
      

  4.   

    TStrings是纯虚类,不能实例化。所以要用TStringList。用
    function GetHRef(s: string;var sl:TStringList);这种方法比较好