Hvornår Delphi påkalder en begivenhedshåndterer, de gamle værdier for lokale variabler udslettes. Hvad hvis vi vil holde styr på, hvor mange gange der er klikket på en knap? Vi kunne have værdierne ved at bruge en variabel på enhedsniveau, men det er generelt en god ide at reservere enhedsniveauvariabler kun til deling af oplysninger. Hvad vi har brug for kaldes normalt statiske variabler eller indtastede konstanter i Delphi.
Variabel eller konstant
Typede konstanter kan sammenlignes med initialiserede variabler-variabler, hvis værdier er defineret ved posten til deres blok (normalt begivenhedshåndterer). En sådan variabel initialiseres kun, når programmet starter med at køre. Derefter fortsætter værdien af en indtastet konstant mellem successive opkald til deres procedurer.
Brug af indtastede konstanter er en meget ren måde at implementere automatisk initialiserede variabler på. For at implementere disse variabler uden indtastede konstanter, skal vi oprette et initialiseringsafsnit, der indstiller værdien af hver initialiserede variabel.
Variable typede konstanter
Selvom vi erklærer indtastede konstanter i const-sektionen i en procedure, er det vigtigt at huske, at de ikke er konstanter. På ethvert tidspunkt i din ansøgning, hvis du har adgang til identifikatoren for en indtastet konstant, vil du være i stand til at ændre dens værdi.
Hvis du vil se indtastede konstanter på arbejdet, skal du sætte en knap på en blank form og tildele følgende kode til OnClick-begivenhedshåndtereren:
procedure TForm1.Button1Click (Afsender: TObject); const klik: Heltal = 1; // ikke en sand konstantbegynde Form1.Caption: = IntToStr (klik); klik: = klik + 1; ende;
Bemærk, at hver gang du klikker på knappen, dannes billedforøgelser konstant.
Prøv nu følgende kode:
procedure TForm1.Button1Click (Afsender: TObject); Var klik: Heltal; begynde Form1.Caption: = IntToStr (klik); klik: = klik + 1; ende;
Vi bruger nu en uinitialiseret variabel til kliktælleren. Bemærk, at den underlige værdi i formularens billedtekst, når du har klikket på knappen.
Konstant typede konstanter
Du er enig i, at ideen om modificerbare konstanter lyder lidt mærkelig. I 32 bit versioner af Delphi besluttede Borland at afskrække brugen af dem, men støtte dem til Delphi 1 legacy-kode.
Vi kan aktivere eller deaktivere Tildelbare maskinskrevne konstanter på Compiler-siden i dialogboksen Projektindstillinger.
Hvis du har deaktiveret Tildelbare maskinskrevne konstanter for et givet projekt, vil Delphi give dig 'Venstre side kan ikke tildeles til' fejl ved kompilering, når du forsøger at kompilere forrige kode. Du kan dog oprette tilordneligt indtastet konstant ved at erklære:
{$ J +}const klik: Heltal = 1; {$ J-}
Derfor ser den første eksempelkode ud:
procedure TForm1.Button1Click (Afsender: TObject); const{$ J +} klik: Heltal = 1; // ikke en sand konstant{$ J-}begynde Form1.Caption: = IntToStr (klik); klik: = klik + 1; ende;
Konklusion
Det er op til dig at beslutte, om du vil have, at indtastede konstanter skal kunne tildeles eller ej. Den vigtige ting her er, at udover ideel til tællere, er indtastede konstanter ideelle til at fremstille komponenter vekselvis synlige eller usynlige, eller vi kan bruge dem til at skifte mellem en hvilken som helst boolsk ejendomme. Typede konstanter kan også bruges i TTimer's begivenhedshåndterer for at holde styr på, hvor mange gange endda der er blevet udløst.