PDA

Ver la Versión Completa : Comparar String con Constante


brandolin
08-06-2007, 00:59:12
Hola a todos, paso a explicar el problema
Tengo las constantes siguiente:

cod1 = 100
cod2 = 101
cod3 = 102
cod3 = 103

y tengo un proceso que obtiene en un string una valor que es casualmente el nombre de la constante, y lo que quiero obtener es el valor de la constante... por ejemplo:

X := 'cod1';

y quiero comparar

if (X = nombre(cod1))
then Y := cod1;

siendo Nombre() la funcion que devolveria el nombre de la consnte y no su valor.

Alguna sugerencia. Gracias

PD: Esto en el anterior Clipper se llamaba macro sustitucion y se hacia con el @ antes del nombre de la variable....:confused:

roman
08-06-2007, 05:46:05
Veo difícil que esto pueda hacerse en delphi, porque los nombres de las constantes son sólo para identificarlas en el código; el compilador sustituye su valor en cada expresión en la que aparece, de manera que el nombre se pierde en el ejecutable final.

No obstante hay alternativas. Por ejemplo, puedes valerte de un TStringList que 'englobe' las constantes:


var
Constantes: TStringList;

...

Constantes.Values['cod0'] := 100;
Constantes.Values['cod1'] := 101;
Constantes.Values['cod2'] := 102;
Constantes.Values['cod3'] := 103;

...

if S = 'cod2' then
Y := Constantes.Values[S];


La variable Constantes debes construirla ates de usarla con


Constantes := TStringList.Create;


y destruirla cuando ya no la uses:


Constantes := TStringList.Free;


Claro que en realidad ya no estamos hablando de constantes, pero puede satisfacer la necesidad.

// Saludos