Tstrings和Tstringlist都是字符串数组吧
他们有什么区别?
还有没有其他的字符串数组类?

解决方案 »

  1.   

    var str:TStrings;
    begin
      str:=TStringList.create;
    end;
      

  2.   

    你是说 TStringList是TStrings的父类?
      

  3.   

    正好相反!TStrings是TStringList的父类!
      

  4.   

    没错,TStringList是TStrings的父类
      

  5.   

    由于TStrings类含有抽象成分,所以要采用TStrings类的派生类TStringList来代替TStrings声明一个实例!
      

  6.   

    TStrings里的方法很多有ABSTRACT,不能直接用,要写它的派生类才能用,而TStringList就是它的派生类可以直接用。
      

  7.   

    To 楼上两位  TStrings里面抽象成分不多吧,是不是看错了!TStrings里面很多的方法都是虚拟的例如方法CompareStrings就是定义为虚拟的function CompareStrings(const S1, S2: string): Integer; virtual;
    ......
    function TStrings.CompareStrings(const S1, S2: string): Integer;
    begin
      Result := AnsiCompareText(S1, S2);
    end;具体区别个人认为不是很大,你完全可以自己定义个TStrings对象来使用!!不过俺日常写的时候都是用派生的TStringList对象!而这个方法在TStringList类中被重载!如下function CompareStrings(const S1, S2: string): Integer; override;
    ......
    function TStringList.CompareStrings(const S1, S2: string): Integer;
    begin
      if CaseSensitive then
        Result := AnsiCompareStr(S1, S2)
      else
        Result := AnsiCompareText(S1, S2);
    end;
      

  8.   

    TStrings是抽象类,不能直接被创建用,派生类才被创建,而TStringList就是它的派生类可以直接用。
    例如
    var a:tstrings;
    a:=tstrings.create // 这是错误的
    a:=tstringlist.create // 这是正确的