Why variables are declared as TStrings
and created as TStringList
?
eg: the var sl
is declared as TStrings
but created as TStringList
var
sl : TStrings;
begin
sl := TStringList.Create;
// add string values...
sl.Add( 'Delphi' );
sl.Add( '2.01' );
// get string value using its index
// sl.Strings( 0 ) will return
// 'Delphi'
MessageDlg(
sl.Strings[ 0 ],
mtInformation, [mbOk], 0 );
sl.Free;
end;
TStrings
is an abstract type that doesn't have all methods implemented.
TStringList
is a descendant of TStrings
and implements all functions. In your code, you could declare your variable also as TStringList
.
However e.g. on function definitions it makes sense to accept a TStrings
parameter instead of a TStringList
:
procedure doSomething(lst: TStrings);
This enables the function to work with all implementations of TStrings
, not only TStringList
.