Kdaj Delphi prikliče upravljavca dogodkov, stare vrednosti lokalnih spremenljivk se izbrišejo. Kaj pa, če želimo spremljati, kolikokrat je bil kliknjen gumb? Vrednosti lahko obdržimo z uporabo spremenljivke na enoti, vendar je na splošno dobro, da spremenljivke na ravni enote rezerviramo le za izmenjavo informacij. Potrebujemo običajno statične spremenljivke ali vtipkane konstante v Delfih.
Spremenljiv ali stalen
Natipkane konstante lahko primerjamo z inicializiranimi spremenljivkami-spremenljivkami, katerih vrednosti so določene ob vstopu v njihov blok (ponavadi obdelovalec dogodkov). Takšna spremenljivka se inicializira šele, ko se program začne izvajati. Po tem vrednost vtipkane konstante ostane med zaporednimi klici v njihove postopke.
Uporaba vtipkanih konstant je zelo čist način izvajanja samodejno inicializiranih spremenljivk. Za izvajanje teh spremenljivk brez vtipkanih konstant bomo morali ustvariti inicializacijski odsek, ki nastavi vrednost vsake inicializirane spremenljivke.
Spremenljive konstante
Čeprav v razdelku const deklariramo vtipkane konstante, je pomembno, da ne pozabimo, da niso konstante. Če imate dostop do identifikatorja za vtipkano konstanto, lahko kadar koli v aplikaciji spremenite njegovo vrednost.
Če si želite ogledati vtipkane konstante pri delu, vstavite gumb na prazen obrazec in dodelite naslednjo kodo upravljavcu dogodkov OnClick:
postopek TForm1.Button1Click (Pošiljatelj: TObject); konst kliki: Integer = 1; // ni prava stalnicazačeti Form1.Caption: = IntToStr (kliki); kliki: = kliki + 1; konec;
Upoštevajte, da vsakič, ko kliknete na gumb, vedno naraščajo napise.
Zdaj poskusite z naslednjo kodo:
postopek TForm1.Button1Click (Pošiljatelj: TObject); var kliki: Integer; začeti Form1.Caption: = IntToStr (kliki); kliki: = kliki + 1; konec;
Zdaj uporabljamo neinicializirano spremenljivko za števec klikov. Ko kliknete gumb, opazite to čudno vrednost v napisih obrazcev.
Konstantne tipizirane konstante
Morate se strinjati, da se ideja o spremenljivih konstantah sliši nekoliko nenavadno. V 32-bitnih različicah Delphi Borland se je odločil, da odvrne njihovo uporabo, vendar jih podpira za podedovano kodo Delphi 1.
Na strani Prevajalnik v pogovornem oknu Možnosti projekta lahko omogočimo ali onemogočimo Assignable vtipkane konstante.
Če ste za določen projekt onemogočili Assignable vtipkane konstante, vam bo ob poskusu sestavljanja prejšnje kode Delphi ob prepiranju dal napako 'Leva stran ne more biti dodeljena'. Kljub temu lahko ustvarite določeno konstanto tipk, tako da izjavite:
{$ J +}konst kliki: Integer = 1; {$ J-}
Zato je prva vzorčna koda videti tako:
postopek TForm1.Button1Click (Pošiljatelj: TObject); konst{$ J +} kliki: Integer = 1; // ni prava stalnica{$ J-}začeti Form1.Caption: = IntToStr (kliki); kliki: = kliki + 1; konec;
Zaključek
Odločite se, ali želite vnesti konstante, ki jih je mogoče dodeliti ali ne. Pomembno pri tem je, da so poleg izdelave števcev vtipkane konstante idealne tudi za izdelavo komponente so izmenično vidne ali nevidne ali pa jih lahko uporabimo za preklapljanje med katerim koli Boolovim lastnosti. Natipkane konstante je mogoče uporabiti tudi v TTimerjevem obdelovalcu dogodkov za spremljanje, kolikokrat se je sploh sprožilo.