Wanneer Delphi een gebeurtenishandler aanroept, worden de oude waarden van lokale variabelen weggevaagd. Wat als we willen bijhouden hoe vaak op een knop is geklikt? We zouden de waarden kunnen laten bestaan door een variabele op unit-niveau te gebruiken, maar het is over het algemeen een goed idee om variabelen op unit-niveau alleen te reserveren voor het delen van informatie. Wat we nodig hebben worden meestal statische variabelen of getypte constanten in Delphi genoemd.
Getypte constanten kunnen worden vergeleken met geïnitialiseerde variabelen-variabelen waarvan de waarden worden gedefinieerd bij binnenkomst in hun blok (meestal gebeurtenishandler). Een dergelijke variabele wordt alleen geïnitialiseerd wanneer het programma wordt gestart. Daarna blijft de waarde van een getypte constante tussen opeenvolgende aanroepen van hun procedures.
Het gebruik van getypte constanten is een zeer schone manier om automatisch geïnitialiseerde variabelen te implementeren. Om deze variabelen zonder getypte constanten te implementeren, moeten we een initialisatiesectie maken die de waarde van elke geïnitialiseerde variabele instelt.
Hoewel we getypte constanten in de constsectie van een procedure verklaren, is het belangrijk om te onthouden dat het geen constanten zijn. Als u op elk gewenst moment in uw toepassing toegang hebt tot de ID voor een getypte constante, kunt u de waarde ervan wijzigen.
Als u getypte constanten aan het werk wilt zien, plaatst u een knop op een leeg formulier en wijst u de volgende code toe aan de OnClick-gebeurtenishandler:
procedure TForm1.Button1Click (Sender: TObject); const klikken: geheel getal = 1; // geen echte constante beginnen Form1.Caption: = IntToStr (klikken); klikken: = klikken + 1; einde;
Merk op dat elke keer dat u op de knop klikt, het bijschrift stapsgewijs wordt verhoogd.
Probeer nu de volgende code:
procedure TForm1.Button1Click (Sender: TObject); var klikken: geheel getal; beginnen Form1.Caption: = IntToStr (klikken); klikken: = klikken + 1; einde;
We gebruiken nu een niet-geïnitialiseerde variabele voor de teller voor klikken. Merk op dat die vreemde waarde in het formulierbijschrift nadat u op de knop klikt.
Je moet het ermee eens zijn dat het idee van aanpasbare constanten een beetje vreemd klinkt. In 32-bits versies van Delphi Borland besloten het gebruik ervan te ontmoedigen, maar ondersteunen ze voor Delphi 1 legacy-code.
We kunnen toewijsbare getypte constanten in- of uitschakelen op de compilerpagina van het dialoogvenster Projectopties.
Als u Assignable getypte constanten voor een bepaald project hebt uitgeschakeld, geeft Delphi u bij het compileren de fout 'Linkerzijde kan niet worden toegewezen' wanneer u probeert de vorige code te compileren. U kunt echter een toewijsbare getypte constante maken door te verklaren:
$ J + const klikken: geheel getal = 1; $ J-
Daarom ziet de eerste voorbeeldcode eruit:
procedure TForm1.Button1Click (Sender: TObject); const $ J + klikken: geheel getal = 1; // geen echte constante $ J- beginnen Form1.Caption: = IntToStr (klikken); klikken: = klikken + 1; einde;