//------------------ File Singers.pas ------------------ unit Singers; interface uses SysUtils ; type TAbstractSinger = class private FLine: String ; FCanSing: boolean ; function GetLine: String ; virtual ; procedure SetLine(aLine: String) ; virtual ; public property CanSing: boolean read FCanSing write FCanSing ; property Line: String read GetLine write SetLine ; function Sing: String ; virtual ; abstract ; end ; TBottlesSinger = class(TAbstractSinger) private FCounter: integer ; function EvalS: String ; procedure SetCounter(aValue: integer) ; procedure PrepareLine ; property Counter: integer read FCounter write SetCounter; public constructor Create ; function Sing: String ; override ; end ; const CRLF: String = '' + #13#10 ; implementation { TAbstractSinger } function TAbstractSinger