Når Delphi påkaller en hendelseshåndterer, de gamle verdiene til lokale variabler blir utslettet. Hva om vi vil følge med på hvor mange ganger en knapp er blitt klikket? Vi kan ha verdiene ved å bruke en variabel på enhetsnivå, men det er generelt en god idé å reservere variabler på enhetsnivå bare for å dele informasjon. Det vi trenger kalles vanligvis statiske variabler eller maskinskrevne konstanter i Delphi.
Variabel eller konstant
Typede konstanter kan sammenlignes med initialiserte variabler-variabler hvis verdier er definert ved oppføring til deres blokkering (vanligvis hendelsesbehandler). En slik variabel initialiseres bare når programmet starter å kjøre. Etter det vedvarer verdien av en typisk konstant mellom påfølgende samtaler til prosedyrene deres.
Å bruke inntastede konstanter er en veldig ren måte å implementere automatisk initialiserte variabler på. For å implementere disse variablene uten inntastede konstanter, må vi opprette en initialiseringsdel som angir verdien for hver initialiserte variabel.
Variable Typed Constants
Selv om vi erklærer inntastede konstanter i const-delen av en prosedyre, er det viktig å huske at de ikke er konstanter. Når som helst i applikasjonen din, hvis du har tilgang til identifikatoren for en maskinskrevet konstant, vil du kunne endre verdien.
Hvis du vil se inntastede konstanter på jobb, setter du en knapp på et blankt skjema og tilordner følgende kode til hendelsesbehandleren på OnClick:
fremgangsmåte TForm1.Button1Click (avsender: TObject); konst klikk: Heltall = 1; // ikke en sann konstantbegynne Form1.Caption: = IntToStr (klikk); klikk: = klikk + 1; slutt;
Legg merke til at hver gang du klikker på knappen, danner du bildetekst trinnvis.
Prøv nå følgende kode:
fremgangsmåte TForm1.Button1Click (avsender: TObject); Var klikk: Heltall; begynne Form1.Caption: = IntToStr (klikk); klikk: = klikk + 1; slutt;
Vi bruker nå en uinitialisert variabel for klikk-telleren. Legg merke til den rare verdien i skjemaeteksten når du har klikket på knappen.
Constant Typed Constants
Du må være enig i at ideen om modifiserbare konstanter høres litt rart ut. I 32-bits versjoner av Delphi bestemte Borland seg for å fraråde bruken av dem, men støtte dem for Delphi 1-legacy-kode.
Vi kan aktivere eller deaktivere tilordnede maskinskrevne konstanter på Compiler-siden i dialogboksen Prosjektalternativer.
Hvis du har deaktivert Tilordnede maskinskrevne konstanter for et gitt prosjekt, vil Delphi gi deg "Venstre side kan ikke tilordnes til" -feil ved samlingen når du prøver å kompilere forrige kode. Du kan imidlertid lage tilordnede maskinskrevne konstant ved å erklære:
{$ J +}konst klikk: Heltall = 1; {$ J-}
Derfor ser den første eksempelkoden ut:
fremgangsmåte TForm1.Button1Click (avsender: TObject); konst{$ J +} klikk: Heltall = 1; // ikke en sann konstant{$ J-}begynne Form1.Caption: = IntToStr (klikk); klikk: = klikk + 1; slutt;
Konklusjon
Det er opp til deg å bestemme om du vil at inntastede konstanter skal kunne tilordnes eller ikke. Det viktige her er at foruten ideelle for tellere, er maskinskrevne konstanter ideelle for å lage komponenter vekselvis synlige eller usynlige, eller vi kan bruke dem til å veksle mellom hvilken som helst boolsk eiendommer. Typede konstanter kan også brukes i TTimer hendelsesbehandler for å holde oversikt over hvor mange ganger til og med har blitt utløst.