Înțelegerea constantelor tipografice din Delphi

Cand Delphi invocă un handler 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.

Variabilă sau constantă

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.

instagram viewer

Constante variabile tipografice

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.

Constante tipate constant

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 să le sprijine 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ța tipărită asignabilă 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; 

Concluzie

Depinde de tine să decizi dacă vrei ca constantele dactilografiate să fie atribuibile sau nu. Lucrul important este că, pe lângă idealul pentru contoare, constantele tastate sunt ideale pentru confecționare componente alternativ vizibile sau invizibile sau le putem folosi pentru a comuta între orice boolean proprietăți. Constanțele tipate pot fi, de asemenea, utilizate în instrumentul TTimer pentru a urmări de câte ori chiar a fost declanșat.