{$MODE OBJFPC}
unit useful;

interface

type
  TRecord = record
    I: Integer;
    B: Byte;
    F: Single;
    S: AnsiString;
    P: PAnsiChar;
  end;

  TEntity = object
    I: Integer;
    B: Byte;
    F: Single;
    S: AnsiString;
    P: PAnsiChar;
    constructor Init;
    destructor Done;
    procedure Print; virtual;
  end;

  TKeeper = class
  public
    I: Integer;
    B: Byte;
    F: Single;
    S: AnsiString;
    P: PAnsiChar;
    constructor Create;
    destructor Destroy; override;
    procedure Print; virtual;
  end;

implementation

constructor TEntity.Init;
begin
end;

destructor TEntity.Done;
begin
end;

procedure TEntity.Print;
begin
  Writeln(I, ' ', B, ' ', F, ' ', S, ' ', P);
end;

constructor TKeeper.Create;
begin
end;

destructor TKeeper.Destroy;
begin
end;

procedure TKeeper.Print;
begin
  Writeln(I, ' ', B, ' ', F, ' ', S, ' ', P);
end;

end.
