Ver Mensaje Individual
  #3  
Antiguo 27-08-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Reputación: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Bueno. Pues, buscando un poco en los Foros me topo con este mensaje del amigo Federico que parece aclarar bastante las cosas respecto de lo que nos ocupa.

En palabras de Federico:

Cita:
Empezado por Federico Firenze
Modificar constantes en tiempo de ejecución es imposible, ya que el compilador reemplaza la constante por el valor, por lo que no existe una "variable" con su contenido.
Pero, en el caso en que nos encontramos:

Cita:
Empezado por Federico Firenze
Pero... si utilizas constantes tipada, si puedes hacerlo ya que estas constantes funcionan como variables, a no ser que la directiva {$J-} este activa.
Por cierto que, la directiva del compilador {$J} ó {$WRITEABLECONST} nos lo termina de aclarar:

Cita:
Empezado por Ayuda de Delphi
The $J directive controls whether typed constants can be modified or not. In the {$J+} state, typed constants can be modified, and are in essence initialized variables. In the {$J-} state, typed constants are truly constant, and any attempt to modify a typed constant causes the compiler to report an error.
Es decir, que esto es posible:

Código Delphi [-]
{$J+}
procedure TForm1.Button1Click(Sender: TObject);
const
  FConstante: string = '¡Hola ';
begin
  ShowMessage( FConstante + ' mundo!');
end;
{$J-}

Y es lo que se hace en el código que tú has expuesto, utilizar una constante a modo de variable previamente inicializada. Probablemente porque:

Cita:
Empezado por Ayuda de Delphi
In early versions of Delphi and Borland Pascal, typed constants were always writeable, corresponding to the {$J+} state. Old source code that uses writeable typed constants must be compiled in the {$J+} state, but for new applications it is recommended that you use initialized variables and compile your code in the {$J-} state.
PD: Puede comprobarse cómo el código fuente que he puesto en mi anterior mensaje no funcionaría con constantes "no tipadas".
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 27-08-2006 a las 13:47:18.
Responder Con Cita