Fórum Incompatible Types: ´String´ e ´Enumeration´ #317828
30/03/2006
0
type TTipoCam=Record
TipoCam: (CCorPrimer, CCorBase, CCorFaixa);
end;
depois no seção public:
TTpCam: TTipoCam;
Para declarar defino :
TTpCam.TipoCam:=CCorPrimer
Mas se eu quizer jogar em uma variavel do tipo String
Str:=TTpCam.TipoCam
ñ da certo ele da a mensagem de erro:
Incompatible Types: ´String´ e ´Enumeration´
Alguem ja passou por isto, ou ñ tem como converter?
Host
Curtir tópico
+ 0Posts
30/03/2006
Uhkra
Str:=TTpCam.TipoCam
case TTpCam.TipoCam of
CCorPrimer:str:=´alguma coisa´;
...
end;
Gostei + 0
30/03/2006
Michael
Até onde eu sei o Delphi só faz conversão implícita de dados do tipo [b:cafcf17be3]Variant[/b:cafcf17be3], mesmo assim apenas de alguns. O resto vc tem que converter manualmente. Não é possível passar um número para uma string e esperar que funcione.
Para converter um tipo enumerado para sua representação string, vc precisa usar [b:cafcf17be3]RTTI[/b:cafcf17be3], mais precisamente a função [b:cafcf17be3]GetEnumName[/b:cafcf17be3]. Mas para isso vc vai precisar criar o tipo enumerado fora do record. Veja abaixo:
uses TypInfo; type TTipoEnumerado = (teUm, teDois, teTres); ... var S: string; T: TTipoEnumerado; begin S := GetEnumName(TypeInfo(TTipoEnumerado), Ord(teDois)); ShowMessage(S); // S é igual a ´teDois´ end;
A recíproca tbm é verdadeira, basta usar [b:cafcf17be3]GetEnumValue[/b:cafcf17be3].
[]´s
Gostei + 0
30/03/2006
Host
TTipoCam: (CCorPrimer, CCorBase, CCorFaixa);
procedure TForm.LeTipoCamada(var CamName: String);
var
TpCam: TTipoCam;
begin
TpCam:=TTipoCam(GetEnumValue(TypeInfo(TTipoCam),CamName));
end;
Var
CorCamada: String;
Chamada da procedure
LeTipoCamada(CorCamada);
Gostei + 0
30/03/2006
Host
Type
TTipoCam: (CCorPrimer, CCorBase, CCorFaixa);
procedure TForm.LeTipoCamada(var CamName: String);
var
TpCam: TTipoCam;
begin
TpCam:=TTipoCam(GetEnumValue(TypeInfo(TTipoCam),CamName));
end;
Var
CorCamada: String;
Chamada da procedure
LeTipoCamada(CorCamada);
Gostei + 0
30/03/2006
Michael
É isso aí, só que vc não precisa passar [b:c10506aa28]CorCamada [/b:c10506aa28]com [b:c10506aa28]var[/b:c10506aa28].
[]´s
Gostei + 0
30/03/2006
Host
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)