Cuando Delphi invoca un controlador de eventos, los valores antiguos de las variables locales se borran. ¿Qué sucede si queremos hacer un seguimiento de cuántas veces se ha hecho clic en un botón? Podríamos hacer que los valores persistan utilizando una variable de nivel de unidad, pero generalmente es una buena idea reservar variables de nivel de unidad solo para compartir información. Lo que necesitamos generalmente se llama variables estáticas o constantes escritas en Delphi.
Las constantes escritas se pueden comparar con variables inicializadas-variables cuyos valores se definen al ingresar a su bloque (generalmente controlador de eventos). Dicha variable se inicializa solo cuando el programa comienza a ejecutarse. Después de eso, el valor de una constante escrita persiste entre llamadas sucesivas a sus procedimientos..
El uso de constantes escritas es una forma muy limpia de implementar variables inicializadas automáticamente. Para implementar estas variables sin constantes escritas, necesitaremos crear una sección de inicialización que establezca el valor de cada variable inicializada.
Aunque declaramos constantes escritas en la sección constante de un procedimiento, es importante recordar que no son constantes. En cualquier punto de su aplicación, si tiene acceso al identificador para una constante escrita, podrá modificar su valor.
Para ver constantes escritas en el trabajo, coloque un botón en un formulario en blanco y asigne el siguiente código al controlador de eventos OnClick:
procedimiento TForm1.Button1Click (Remitente: TObject); const clics: entero = 1; // no es una constante constante empezar Form1.Caption: = IntToStr (clics); clics: = clics + 1; final;
Tenga en cuenta que cada vez que hace clic en el botón, los subtítulos de los formularios aumentan constantemente.
Ahora prueba el siguiente código:
procedimiento TForm1.Button1Click (Remitente: TObject); var clics: entero; empezar Form1.Caption: = IntToStr (clics); clics: = clics + 1; final;
Ahora estamos usando una variable no inicializada para el contador de clics. Observe ese valor extraño en el título de los formularios después de hacer clic en el botón.
Tienes que aceptar que la idea de constantes modificables suena un poco extraña. En las versiones de 32 bits de Delphi, Borland decidió desalentar su uso, pero los admite para el código heredado de Delphi 1.
Podemos habilitar o deshabilitar constantes escritas asignables en la página del compilador del cuadro de diálogo Opciones de proyecto.
Si ha deshabilitado las constantes tipeadas asignables para un proyecto determinado, cuando intente compilar el código anterior, Delphi le dará el error 'No se puede asignar el lado izquierdo' al compilar. Sin embargo, puede crear una constante de tipo asignable declarando:
$ J + const clics: entero = 1; $ J-
Por lo tanto, el primer código de ejemplo se ve así:
procedimiento TForm1.Button1Click (Remitente: TObject); const $ J + clics: entero = 1; // no es una constante constante $ J- empezar Form1.Caption: = IntToStr (clics); clics: = clics + 1; final;