uses
TypInfo, SysConst;
var
Alignment: TAlignment;
Value: Integer;
P: PTypeInfo;
begin
P := TypeInfo(TAlignment);
Value := GetEnumValue(P,'taLeftJustify');
with GetTypeData(P)^ do
begin
if (Value < MinValue) or (Value > MaxValue) then
begin
raise ERangeError.CreateRes(@SRangeError);
end;
Alignment := TAlignment(Value); // Alignment <- taLeftJustify
end;
end;
var
AlignmentName: String;
begin
AlignmentName := GetEnumName(TypeInfo(TAlignment),
Ord(taRightJustify)); // AlignmentName <- 'taRightJustify'
end;
2008/08/16追記: 該当する列挙子名が存在しないとGetEnumValueが-1を返す問題の対策を追加しました。
2012/05/08追記: 列挙型と列挙子名(文字列)の相互変換(ジェネリックス版)もどうぞ(Delphi 2009以降)。
0 件のコメント:
コメントを投稿