Hola elrayo76.
Hay una duda importante en el aire: ¿la función debe poder distinguir cuál es el tipo del valor pasado como parámetro? ¿Podrías darnos una idea de qué hará la función con él?
A diferencia de C, Delphi no permite que los tipos enumerados sean directamente compatibles con los tipos entero, pero los considera a ambos como
ordinales. Eso los hace fácilmente intercambiables, por ejemplo, usando la función Ord:
Código Delphi
[-]
FuncionMisteriosa (Ord (opRemove));
FuncionMisteriosa (Ord (tkClass));
La desventaja de esto es que la función debe declarar su parámetro de tipo entero, con lo cual se pierde la valiosa información sobre cuál era el tipo del valor pasado.
En caso de que la función deba discernir el tipo del valor, una alternativa viable es que la función sea un
método con parámetro de tipo, también conocido como
método genérico:
Código Delphi
[-]Procedure MetodoMisterioso <T> (Value :T);
En este caso la desventaja es que Delphi no cuenta por ahora con un tipo de restricción
enumerated para los parámetros de tipo, por lo que el compilador admitiría cualquier tipo de dato para
T.
NOTA: El enlace dado por
ecfisa puede servirte como introducción al uso de
genéricos en Delphi, fabulosa característica disponible desde la versión 2009.
Un cordial saludo.
Al González.