Kedy Delphi vyvolá obsluhu udalosti, staré hodnoty lokálnych premenných sú vymazané. Čo ak chceme sledovať počet kliknutí na tlačidlo? Mohli by sme nechať hodnoty pretrvávať použitím premennej na úrovni jednotky, ale vo všeobecnosti je vhodné rezervovať premenné na úrovni jednotky iba na zdieľanie informácií. To, čo v Delphi potrebujeme, sa zvyčajne nazývajú statické premenné alebo zadané konštanty.
Premenná alebo konštantná
Zadané konštanty je možné porovnávať s inicializovanými premennými-premennými, ktorých hodnoty sú definované pri vstupe do ich bloku (zvyčajne obsluha udalostí). Takáto premenná sa inicializuje iba pri spustení programu. Potom hodnota typovanej konštanty pretrváva medzi následnými výzvami na ich postupy.
Použitie zadaných konštánt je veľmi čistý spôsob implementácie automaticky inicializovaných premenných. Ak chcete implementovať tieto premenné bez zadaných konštánt, budeme musieť vytvoriť inicializačnú časť, ktorá nastaví hodnotu každej inicializovanej premennej.
Variabilné typované konštanty
Aj keď deklarujeme zadané konštanty v sekcii ústavy, je dôležité si uvedomiť, že nejde o konštanty. Ak budete mať kedykoľvek prístup k identifikátoru pre zadanú konštantu, budete môcť kedykoľvek zmeniť jej hodnotu.
Ak chcete vidieť zadané konštanty v práci, umiestnite tlačidlo na prázdny formulár a obsluhe udalosti OnClick priraďte nasledujúci kód:
procedúra TForm1.Button1Click (Sender: TObject); const kliknutia: celé číslo = 1; // nie je skutočná konštantazačať Form1.Caption: = IntToStr (kliknutia); kliknutia: = kliknutia + 1; koniec;
Všimnite si, že zakaždým, keď kliknete na tlačidlo, postupne sa zvyšujú prírastky titulkov.
Teraz skúste nasledujúci kód:
procedúra TForm1.Button1Click (Sender: TObject); var kliknutia: celé číslo; začať Form1.Caption: = IntToStr (kliknutia); kliknutia: = kliknutia + 1; koniec;
Teraz používame neinicializovanú premennú pre počítadlo kliknutí. Všimnite si, že po kliknutí na tlačidlo je v nadpise formulárov zvláštna hodnota.
Konštantné typované konštanty
Musíte súhlasiť s tým, že myšlienka modifikovateľných konštánt znie trochu divne. V 32 bitových verziách Delphi Borland sa rozhodol odradiť od ich používania, ale podporoval ich pre pôvodný kód Delphi 1.
Môžeme povoliť alebo zakázať priraditeľné zadané konštanty na stránke Kompilátor v dialógovom okne Možnosti projektu.
Ak ste pre daný projekt zakázali priraditeľné zadané konštanty, pri pokuse o kompiláciu predchádzajúceho kódu vám spoločnosť Delphi pri kompilácii zobrazí chybu „Ľavá strana nemôže byť priradená k chybe“. Môžete však vytvoriť priraditeľnú napísanú konštantu vyhlásením:
{$ J +}const kliknutia: celé číslo = 1; {$ J-}
Preto prvý príklad kódu vyzerá takto:
procedúra TForm1.Button1Click (Sender: TObject); const{$ J +} kliknutia: celé číslo = 1; // nie je skutočná konštanta{$ J-}začať Form1.Caption: = IntToStr (kliknutia); kliknutia: = kliknutia + 1; koniec;
záver
Je na vás, aby ste sa rozhodli, či chcete, aby boli zadané konštanty priraditeľné alebo nie. Dôležitá vec je, že okrem ideálnych pre počítadlá sú typizované konštanty tiež ideálne na výrobu komponenty, ktoré sú striedavo viditeľné alebo neviditeľné, alebo ich môžeme použiť na prepínanie medzi ľubovoľnými booleanmi Vlastnosti. Zadané konštanty môžu byť tiež použité v obsluhe udalostí TTimera na sledovanie toho, koľkokrát bolo spustené.