quarta-feira, 2 de setembro de 2009

Tipo Enumerado para String

Olá!

Eventualmente é necessário converter um tipo enumerado para string.

Dai você provavelmente pensaria em um código mais ou menos assim:

type
TMeuTipo = (mtOpcao1, mtOpcao2)

function Converter(peOpcao: TMeuTipo): string;
begin
case peOpcao of
mtOpcao1 : Result := 'mtOpcao1';
//E assim sucessivamente...
end;
end;


Imagine os problemas de manutenção para falar o mínimo...

Ao invés disso, use a RTTI a seu favor:

uses
TypInfo;

type
TMeuTipo = (mtOpcao1, mtOpcao2)

function Converter(peOpcao: TMeuTipo): string;
begin
//GetEnumName é a solução!
Result := GetEnumName(TypeInfo(TMeuTipo),Ord(peOpcao));
end;


P.S.: Um ótimo artigo sobre este assunto:

http://www.techtricks.com/delphi/enumname.php

Minha lista de blogs