Kada Delphi poziva na dostavljač događaja, stare vrijednosti lokalnih varijabli se brišu. Što ako želimo pratiti koliko su puta kliknuli na gumb? Mogle bismo imati trajne vrijednosti korištenjem varijable na razini jedinice, ali općenito je dobra ideja da varijable na razini jedinice rezerviramo samo za razmjenu informacija. Ono što trebamo obično se u Delfima nazivaju statičke varijable ili tipkane konstante.
Promjenjiva ili stalna
Utipkane konstante mogu se usporediti s inicijaliziranim varijablama-varijablama čije su vrijednosti definirane pri ulasku u njihov blok (obično poslužitelj događaja). Takva se varijabla inicijalizira samo kada se program pokrene. Nakon toga, vrijednost upisane konstante i dalje ostaje između uzastopnih poziva u njihovim postupcima.
Upotreba tipkanih konstanti vrlo je čist način implementacije automatski inicijaliziranih varijabli. Da bismo implementirali ove varijable bez tipkanih konstanti, morat ćemo stvoriti odjeljak za inicijalizaciju koji postavlja vrijednost svake inicijalizirane varijable.
Promjenljive konstante
Iako izjavljujemo tipkane konstante u const dijelu postupka, važno je zapamtiti da oni nisu konstante. U bilo kojem trenutku vaše aplikacije, ako imate pristup identifikatoru za unesenu konstantu, moći ćete izmijeniti njegovu vrijednost.
Da biste vidjeli tipkane konstante na radu, stavite gumb na prazan obrazac i dodijelite sljedeći kôd alatu za događaje OnClick:
postupak TForm1.Button1Click (Pošiljatelj: TObject); const klikovi: Integer = 1; // nije istinska konstantapočeti Form1.Caption: = IntToStr (klikovi); klikovi: = klikovi + 1; kraj;
Primijetite da svaki put kada kliknete gumb, obrasci naslova stalno se povećavaju.
Sada pokušajte sljedeći kod:
postupak TForm1.Button1Click (Pošiljatelj: TObject); var klikovi: Integer; početi Form1.Caption: = IntToStr (klikovi); klikovi: = klikovi + 1; kraj;
Sada koristimo neinicijaliziranu varijablu za brojač klikova. Primijetite tu čudnu vrijednost u opisima obrazaca nakon što kliknete gumb.
Konstante konstantnog tipa
Morate se složiti s tim da ideja izmjenjivih konstanti zvuči pomalo čudno. U 32-bitnim verzijama Delphi Borland odlučio je obeshrabriti njihovu upotrebu, ali ih podržava za naslijeđeni kod Delphi 1.
Možemo omogućiti ili onemogućiti Pridružene konstantne konstante na stranici sastavljača u dijaloškom okviru Opcije projekta.
Ako ste za određeni projekt onemogućili Pridružene konstantne konstante, prilikom pokušaja sastavljanja prethodnog koda Delphi će vam prilikom kompilacije dati pogrešku 'lijeva strana ne može biti dodijeljena'. Međutim, možete stvoriti dodijeljenu konstantnu konstantu izjavljivanjem:
{$ J +}const klikovi: Integer = 1; {$} J-
Stoga prvi primjer koda izgleda ovako:
postupak TForm1.Button1Click (Pošiljatelj: TObject); const{$ J +} klikovi: Integer = 1; // nije istinska konstanta{$} J-početi Form1.Caption: = IntToStr (klikovi); klikovi: = klikovi + 1; kraj;
Zaključak
Na vama je da odlučite želite li tipkane konstante odrediti ili ne. Ovdje je važno da su, pored idealnih za brojače, tipkane konstante idealne za izradu komponente su naizmjenično vidljive ili nevidljive, ili ih možemo upotrijebiti za prebacivanje između bilo kojeg booleova Svojstva. Upisane konstante mogu se koristiti i u TTimerovom obrađivaču događaja kako bi se evidentiralo koliko se puta čak pokrenulo.