Förstå typade konstanter i Delphi

När Delphi åberopar en händelsehanterare raderas de gamla värdena på lokala variabler ut. Tänk om vi vill hålla reda på hur många gånger en knapp har klickats? Vi kan ha värdena kvar genom att använda en enhetsnivåvariabel, men det är i allmänhet en bra idé att reservera enhetsnivåvariabler endast för att dela information. Vad vi behöver kallas vanligtvis statiska variabler eller typade konstanter i Delphi.

Variabel eller konstant

Typade konstanter kan jämföras med initialiserade variabler-variabler vars värden definieras vid posten till deras block (vanligtvis händelseshanterare). En sådan variabel initialiseras endast när programmet börjar köras. Därefter kvarstår värdet på en typkonstant mellan på varandra följande samtal till deras procedurer.

Att använda typade konstanter är ett mycket rent sätt att implementera automatiskt initialiserade variabler. För att implementera dessa variabler utan skrivna konstanter måste vi skapa ett initieringsavsnitt som anger värdet på varje initierad variabel.

Variabla typkonstanter

Även om vi förklarar skrivna konstanter i const-avsnittet i en procedur, är det viktigt att komma ihåg att de inte är konstanter. När du har tillgång till identifieraren för en typkonstant när som helst i din ansökan kan du ändra dess värde.

För att se skrivna konstanter på jobbet, sätter du en knapp på ett tomt formulär och tilldelar följande kod till händelseshanteraren OnClick:

 procedur TForm1.Button1Click (avsändare: TObject); const    klick: heltal = 1; // inte en riktig konstant Börja   Form1.Caption: = IntToStr (klick); klick: = klick + 1; slutet; 

Observera att varje gång du klickar på knappen bildar du bildtexten stegvis.
Prova nu följande kod:

 procedur TForm1.Button1Click (avsändare: TObject); var    klick: heltal; Börja   Form1.Caption: = IntToStr (klick); klick: = klick + 1; slutet; 

Vi använder nu en oinitialiserad variabel för klickräknaren. Lägg märke till det konstiga värdet i bildtexten när du klickar på knappen.

Konstant typade konstanter

Du måste hålla med om att idén om modifierbara konstanter låter lite konstig. I 32-bitarsversioner av Delphi beslutade Borland att avskräcka deras användning, men stödja dem för Delphi 1-arvkod.

Vi kan aktivera eller inaktivera Tilldelbara typkonstanter på Compiler-sidan i dialogrutan Projektalternativ.

Om du har inaktiverat Tilldelbara typkonstanter för ett visst projekt, när du försöker kompilera tidigare kod kommer Delphi att ge dig "Vänster sida kan inte tilldelas" -fel vid sammanställning. Du kan dock skapa tilldelningsbara typsatt konstant genom att deklarera:

 $ J + const klick: heltal = 1; $ J- 

Därför ser det första exemplet ut:

 procedur TForm1.Button1Click (avsändare: TObject); const $ J +    klick: heltal = 1; // inte en riktig konstant $ J- Börja   Form1.Caption: = IntToStr (klick); klick: = klick + 1; slutet;