Hola.
Un pequeño aporte.
Me he liado bastante para pasar de texto al indice de las enumeraciones de los XMLNS que genera Delphi. Por ejemplo para saber el índice del país a partir del código del país en texto.
He visto algunas soluciones en otras respuestas pero hacía falta declarar listas o arrays auxiliares.
Una pequeña función puede ayudar en estos casos:
Código:
function IndiceEnum(Info: PTypeInfo; const Name: string): Integer;
var
InternalName: string;
begin
InternalName := RemClassRegistry.GetInternalPropName(Info, Name);
Result := GetEnumValue(Info, InternalName);
if Result < 0 then
raise Exception.CreateFmt('Valor %s no encontrado en enumeracion %s', [Name, Info^.Name]);
end;
y en el código se puede colocar
Código:
FacturaExpedida.Contraparte.IDOtro.CodigoPais := CountryType2(IndiceEnum(TypeInfo(CountryType2), Pais));
Donde "Pais" es una variable de tipo "string" que contiene el código del país ('FR', 'IT', etc);
La misma función se puede utilizar con otras enumeraciones que estén declaradas en los XLMNS.
Rubén.