Quando Delphi invoca un gestore eventi, i vecchi valori delle variabili locali vengono cancellati. Cosa succede se vogliamo tenere traccia di quante volte è stato fatto clic su un pulsante? È possibile che i valori persistano utilizzando una variabile a livello di unità, ma è generalmente una buona idea riservare variabili a livello di unità solo per la condivisione di informazioni. Ciò di cui abbiamo bisogno sono di solito chiamati variabili statiche o costanti tipizzate in Delphi.
Le costanti tipizzate possono essere confrontate con variabili-variabili inizializzate i cui valori sono definiti all'entrata nel loro blocco (di solito gestore di eventi). Tale variabile viene inizializzata solo all'avvio del programma. Successivamente, il valore di una costante digitata persiste tra le chiamate successive alle loro procedure.
L'uso di costanti tipizzate è un modo molto chiaro di implementare variabili inizializzate automaticamente. Per implementare queste variabili senza costanti digitate, dovremo creare una sezione di inizializzazione che imposta il valore di ciascuna variabile inizializzata.
Sebbene dichiariamo costanti tipizzate nella sezione const di una procedura, è importante ricordare che non sono costanti. In qualsiasi momento dell'applicazione, se si ha accesso all'identificatore di una costante digitata, sarà possibile modificarne il valore.
Per visualizzare le costanti digitate al lavoro, inserire un pulsante in un modulo vuoto e assegnare il codice seguente al gestore eventi OnClick:
procedura TForm1.Button1Click (Mittente: TObject); const clic: Intero = 1; // non una vera costante inizio Form1.Caption: = IntToStr (clic); clic: = clic + 1; fine;
Si noti che ogni volta che si fa clic sul pulsante, si forma costantemente incrementi di didascalia.
Ora prova il seguente codice:
procedura TForm1.Button1Click (Mittente: TObject); var clic: intero; inizio Form1.Caption: = IntToStr (clic); clic: = clic + 1; fine;
Ora stiamo usando una variabile non inizializzata per il contatore dei clic. Si noti che strano valore nella didascalia dei moduli dopo aver fatto clic sul pulsante.
Devi concordare sul fatto che l'idea di costanti modificabili suona un po 'strana. Nelle versioni a 32 bit di Delphi Borland ha deciso di scoraggiare il loro utilizzo, ma supportarli per il codice legacy di Delphi 1.
È possibile abilitare o disabilitare le costanti digitate assegnabili nella pagina del compilatore della finestra di dialogo Opzioni progetto.
Se hai disabilitato le costanti tipizzate assegnabili per un determinato progetto, quando tenti di compilare il codice precedente, Delphi ti darà l'errore "Impossibile assegnare il lato sinistro" alla compilazione. È possibile, tuttavia, creare una costante digitabile assegnabile dichiarando:
$ J + const clic: Intero = 1; $ J-
Pertanto, il primo codice di esempio appare come:
procedura TForm1.Button1Click (Mittente: TObject); const $ J + clic: Intero = 1; // non una vera costante $ J- inizio Form1.Caption: = IntToStr (clic); clic: = clic + 1; fine;