Când Delphi invocă un manager de evenimente, valorile vechi ale variabilelor locale sunt șterse. Ce se întâmplă dacă vrem să urmărim de câte ori a fost făcut clic pe un buton? Am putea să persistăm valorile folosind o variabilă la nivel de unitate, dar este, în general, o idee bună să rezervăm variabile la nivel de unitate doar pentru partajarea informațiilor. Ceea ce avem nevoie de obicei se numesc variabile statice sau constante dactilografiate în Delphi.
Constanțele tipate pot fi comparate cu variabilele inițializate-variabile ale căror valori sunt definite la intrarea în blocul lor (de obicei, handler event). O astfel de variabilă este inițializată numai atunci când programul începe să funcționeze. După aceea, valoarea unei constante dactilografice persistă între apelurile succesive la procedurile lor.
Utilizarea constantelor dactilografiate este un mod foarte curat de implementare a variabilelor inițializate automat. Pentru a implementa aceste variabile fără constante tastate, va trebui să creăm o secțiune de inițializare care să stabilească valoarea fiecărei variabile inițializate.
Deși declaram constante tipate în secțiunea const a unei proceduri, este important să ne amintim că nu sunt constante. În orice punct al aplicației dvs., dacă aveți acces la identificator pentru o constantă tastată, veți putea modifica valoarea acestuia.
Pentru a vedea constantele tastate la locul de muncă, puneți un buton pe un formular necompletat și atribuiți următorul cod managerului de evenimente OnClick:
procedură TForm1.Button1Click (Expeditor: TObject); const clicuri: Integer = 1; // nu o constantă adevărată începe Form1.Caption: = IntToStr (clicuri); clicuri: = clicuri + 1; Sfârșit;
Rețineți că de fiecare dată când faceți clic pe buton, formele de litere cresc în mod constant.
Încercați acum următorul cod:
procedură TForm1.Button1Click (Expeditor: TObject); var clicuri: Integer; începe Form1.Caption: = IntToStr (clicuri); clicuri: = clicuri + 1; Sfârșit;
Acum folosim o variabilă neinițializată pentru contorul de clicuri. Observați că o valoare ciudată în legendele formularelor după ce faceți clic pe buton.
Trebuie să fiți de acord că ideea constantelor modificabile sună puțin ciudat. În versiunile pe 32 de biți ale Delphi Borland a decis să descurajeze utilizarea acestora, dar le susține pentru codul moștenitor Delphi 1.
Putem activa sau dezactiva constante tastate Assignable în pagina Compiler din caseta de dialog Opțiuni de proiect.
Dacă ați dezactivat Constanțe tipografice alocate pentru un proiect dat, atunci când încercați să compilați codul anterior, Delphi vă va da „Latere stânga nu poate fi atribuit” erorii la compilare. Cu toate acestea, puteți crea o constantă tastată asignabilă, declarand:
$ J + const clicuri: Integer = 1; $ J-
Prin urmare, primul cod de exemplu arată:
procedură TForm1.Button1Click (Expeditor: TObject); const $ J + clicuri: Integer = 1; // nu o constantă adevărată $ J- începe Form1.Caption: = IntToStr (clicuri); clicuri: = clicuri + 1; Sfârșit;