El problema con esas funciones es el costo que tiene para la aplicación, porque el compilador no las transforma en código máquina equivalente a un
If...Then normal.
Por ejemplo, si el tercer parámetro dado a IfThen es una expresión que llama a otra rutina, ésta se ejecutará aunque el primer parámetro sea True, es decir, se realizará un procesamiento inútil. Y aun cuando las expresiones dadas como valores a devolver sean simples valores literales o variables, la carga para la CPU seguirá siendo mayor que la de un
If...Then normal (incluso si IfThen fuese compilada como una función
in line).
Supongo que todavía no se agrega un operador ternario en las últimas versiones del compilador de Delphi. Espero que eso ocurra, pero ruego al cielo que no vaya a ser tan horrible como el de C.
Gato: Sólo son métodos las rutinas que pertenecen a una clase. Al no estar dentro de una clase, hablamos entonces de funciones / procedimientos independientes (
sueltos).
Saludos.
Al González.
AÑADO: Claro, pueden hacerse sobrecargas tanto de métodos como de rutinas sueltas.