从字符串const数组中检索字符串

时间:2012-10-16 14:44:29

标签: delphi delphi-2010

如果我知道整数值的枚举,如何获取字符串表示?

type    
  MyEnum = (tmp_one, tmp_two, tmp_three);

const
  MyTypeNames: array[tmp_one..tmp_three] of string = ('One', 'Two', 'Three');

3 个答案:

答案 0 :(得分:6)

我假设你有一个序数值而不是这个枚举类型的变量。如果是这样,那么你只需要将序数强制转换为枚举类型。像这样:

function GetNameFromOrdinal(Ordinal: Integer): string;
begin
  Result := MyTypeNames[MyEnum(Ordinal)]; 
end;

答案 1 :(得分:6)

我假设您要使用字符串数组中的名称。然后这很简单:

var
  myEnumVar: MyEnum;
begin
  myEnumVar := tmp_two; // For example
  ShowMessage(MyTypeNames[myEnumVar]);

答案 2 :(得分:4)

您不需要使用枚举类型的序数值。您可以使用枚举类型声明一个数组作为其“下标”,并直接使用枚举变量。

type    
  TMyEnum = (tmp_one, tmp_two, tmp_three);

const
  MyTypeNames: array[TMyEnum] of string = ('One', 'Two', 'Three');

function Enum2Text(aEnum: TMyEnum): string;
begin
  Result := MyTypeNames[aEnum]; 
end;

使用enum或整数值调用它来枚举:

Enum2Text(tmp_one);     // -> 'One'
Enum2Text(TMyEnum(2));  // -> 'Three'