请帮我看看,这样的操作有问题吗?为什么总提示Abstract error
var item:TStrings;
item:=TString.Create;
item.Clear;
adodataset.first;
while not AdodataSet.eof do
begin
  item.add(adodataset.fieldbyname('aa').asstring);
  adodataset.next;
end;

解决方案 »

  1.   

    声明的时候用TStrings,创建的时候使用TStringListitem:=TStringList.Create;
      

  2.   

    item:=TStringList.Create;  //必需这样,因为TStrings.Create是虚函数
      

  3.   

    Tstrings是抽象类,不能对它实例化,所以Tstrings.create是不合法的.调用Tstringlist.create就相当于把子类付给父类.
      

  4.   

    因为TStrings是一个抽象类,抽象类不能创建它的实例对象。所谓抽象类就是包含了抽象方法的类。抽象方法只有函数头声明后面跟 abstract 关键字。这种方法要在其子类下实现。而且抽象类都是虚方法(virtual)或者动态方法(dynamic)。好像越说越多了...  :)你如果想了解Abstract访访、virtual方法和dynamic方法的区别和关系我建议你看看Object pascal方面的书。《Object pascal 参考手册中文版》里很详细的讲过了。这个论坛好像有下载的。