Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why variables are declared as TStrings and created as TStringList?

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; 
like image 652
Fabio Vitale Avatar asked Feb 21 '12 14:02

Fabio Vitale


1 Answers

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.

like image 160
Chris Avatar answered Sep 20 '22 06:09

Chris