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;
TStrings是抽象类,不能直接被创建用,派生类才被创建,而TStringList就是它的派生类可以直接用。 例如 var a:tstrings; a:=tstrings.create // 这是错误的 a:=tstringlist.create // 这是正确的
begin
str:=TStringList.create;
end;
......
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;
例如
var a:tstrings;
a:=tstrings.create // 这是错误的
a:=tstringlist.create // 这是正确的