Pues no, realmente esto no se puede. ¿Por qué? Porque Delphi es un lenguaje compilado y no interpretado. ¿Qué quiere decir esto? Pues quien sabe pero el caso es que una vez compilado, en el ejecutable ya no quedan referencias a los nombres de funciones, variables, etc. que hayas usado en el código fuente- sólo instrucciones en ensamblador.
Siempre hay alternativas pero dependen mucho del contexto general. Por ejemplo, suponiendo que SelectA, SelectB y SelectC son parte de un X proceso podrías tener algo como
Código Delphi
[-]
type
TProcesoX = class
public
function Select; virtual; abstract;
end;
TProcesoA = class(TProcesoX)
public
function Select; override;
end;
TProcesoB = class(TProcesoX)
public
function Select; override;
end;
TProcesoC = class(TProcesoX)
public
function Select; override;
end;
Según el proceso específico que estés haciendo, instanciarás una u otra clase en una variable de la clase base TProcesoX, de manera que al llamar a Proceso.Select, el polimorfismo se encargará de escoger el correcto.
Pero esto requiere claro, que hayas estructurado tu aplicación en clases.
De no ser así o no ser factible, puedes optar por dos cosas (entre otras que se le ocurran a alguien más).
La primera es: si sólo hay un punto del programa donde debes decidir cuál función llamar, pues olvídate de complicaciones y haz el
case:
Código Delphi
[-]
case Status of
0: SelectA();
1: SelectB();
2: SelectC();
end;
Si es algo que llamas desde distintas partes de la aplicación, podrías crearte una clase "selectora":
Código Delphi
[-]
type
TSelector = class
private
class function SelectA: Integer;
class function SelectB: Integer;
class function SelectC: Integer;
public
class function Select(Status: Integer): Integer;
end;
implementation
function TSelector.Select(Estatus: Integer): Integer;
begin
case Status of
0: Result := Self.SelectA();
1: Result := Self.SelectB();
2: Result := Self.SelectC();
end;
end;
La clase sólo tiene métodos estáticos (directiva
class) de manera que no hay que crear ninguna instancia, simplemente la usas así:
Código Delphi
[-]
TSelector.Select(Status);
Los métodos TSelector.SelectA, TSelector.SelectB y TSelector.SelectC también son estáticos y reemplazarían a los que tenías antes.
O bien los dejas fuera de la clase y dejas a TSelector únicamente con el método Select:
Código Delphi
[-]
function TSelector.Select(Estatus: Integer): Integer;
begin
case Status of
0: Result := SelectA();
1: Result := SelectB();
2: Result := SelectC();
end;
end;
Pero la primera opción te da un cierto orden al englobar en un sólo ente las tres funciones relacionadas.
// Saludos