program study_class;
uses
SysUtils,
LCLProc, LazUTF8; //プロジェクトインスペクタでパッケージLCLを追加
type
TAnimal = class
private
FNickname: string;
public
constructor Create(AName: string);
destructor Destroy; override;
procedure Speak;
property Nickname: string read FNickname;
end;
function C(const S: string): string;
begin
{$IFDEF Windows}
Result := UTF8ToConsole(S);
{$ELSE}
Result := S;
{$ENDIF}
end;
constructor TAnimal.Create(AName: string);
begin
FNickname := AName;
WriteLn(C(FNickname), C(' が生まれたよ!'));
end;
destructor TAnimal.Destroy;
begin
WriteLn(C(FNickname), C(' は去っていった…'));
inherited Destroy;
end;
procedure TAnimal.Speak;
begin
WriteLn(C(FNickname), C(' が鳴いてるよ!'));
end;
var
Fox: TAnimal;
begin
Fox := TAnimal.Create('ミカ');
Fox.Speak;
FreeAndNil(Fox);
end.