본문 바로가기

카테고리 없음

[일반/컴포넌트] 열거형(Enumerated) 상수를 문자열로 바꾸기

반응형
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, typinfo, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  TNumberType = (Zero, One, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten);

var
  Form1: TForm1;

implementation
{$R *.DFM}

function NumberName(Numb: TNumberType): String;
begin
  // 컴파일러에 의해 생성된 run-time type information 을 읽는다
  Result := GetEnumName(TypeInfo(TNumberType), Ord(Numb));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(NumberName(Seven));
  // TNumberType은 내부적으로 0 ~ 10 으로 처리됨
  ShowMessage(NumberName(TNumberType(0))); // type casting
end;

end.
반응형