procedure TForm1.BitBtn1Click(Sender: TObject);
var ss:Tstrings;
begin
  ss:=TStrings.Create;
  ss.Append('这样不行?');
  showmessage(ss.Strings[0]);
  ss.Free;
end;
编译器会提出如下警告:
1.Constructing instance of 'TStrings' containing abstract method 'TStrings.Clear';
2.Constructing instance of 'TStrings' containing abstract method 'TStrings.Del';
3.Constructing instance of 'TStrings' containing abstract method 'TStrings.Insert';
怎么办?

解决方案 »

  1.   

    TStrings是虚拟类,通常我们使用它的子类TStringList如:楼上的方法
      

  2.   

    没错;TSTRINGS是虚拟类,不能够CREATE的;须使用TSTRIGLIST
      

  3.   

    To genphone_ru(改行去学VC) 
    谢谢,原来TStrings下还有子类Tstringlist但是请问,如果没有现成的子类的 还有抽象函数的类
    自定义子类时,是不是要把所有抽象函数重载?(麻烦啊!)
      

  4.   

    TStrings.Clear
    TStrings.Del
    TStrings.Insert
    都是抽象方法没有实际的代码,需要在子类中定义它,比如TStringList就是它的子类,所以一定都用TStringList
      

  5.   


    用实现了其抽象方法的派生类创建对象用于创建对象的子类必须实现抽象父类的抽象方法,是override(覆盖)而不是overload(重载)
      

  6.   

    同意楼上
    相似的还有TList TStream
      

  7.   

    使用 TStrings 的子类。