Wanneer Delphi roept een gebeurtenishandler op, de oude waarden van lokale variabelen worden weggevaagd. Wat als we willen bijhouden hoe vaak er op een knop is geklikt? We kunnen de waarden laten behouden door een unit-level variabele te gebruiken, maar het is over het algemeen een goed idee om unit-level variabelen alleen te reserveren voor het delen van informatie. Wat we nodig hebben, worden in Delphi meestal statische variabelen of getypeerde constanten genoemd.
Variabel of constant
Getypte constanten kunnen worden vergeleken met geïnitialiseerde variabelen-variabelen waarvan de waarden zijn gedefinieerd bij binnenkomst in hun blok (meestal event handler). Een dergelijke variabele wordt alleen geïnitialiseerd wanneer het programma begint te lopen. Daarna blijft de waarde van een getypte constante bestaan 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 te implementeren zonder getypte constanten, moeten we een initialisatiesectie maken waarin de waarde van elke geïnitialiseerde variabele wordt ingesteld.
Variabele getypeerde constanten
Hoewel we getypeerde constanten declareren in het const-gedeelte van een procedure, is het belangrijk om te onthouden dat het geen constanten zijn. Als u op elk moment in uw toepassing toegang heeft tot de ID voor een getypte constante, kunt u de waarde ervan wijzigen.
Om getypte constanten aan het werk te zien, plaatst u een knop op een leeg formulier en wijst u de volgende code toe aan de OnClick-eventhandler:
procedure TForm1.Button1Click (Afzender: TObject); const klikken: geheel getal = 1; // geen echte constantebeginnen Form1.Caption: = IntToStr (klikken); klikken: = klikken + 1; einde;
Merk op dat elke keer dat u op de knop klikt, het bijschrift gestaag toeneemt.
Probeer nu de volgende code:
procedure TForm1.Button1Click (Afzender: TObject); var klikken: geheel getal; beginnen Form1.Caption: = IntToStr (klikken); klikken: = klikken + 1; einde;
We gebruiken nu een niet-geïnitialiseerde variabele voor de klikteller. Let op die rare waarde in het bijschrift van formulieren nadat u op de knop hebt geklikt.
Constante getypte constanten
Je moet het ermee eens zijn dat het idee van aanpasbare constanten een beetje vreemd klinkt. In 32-bits versies van Delphi besloot Borland het gebruik ervan te ontmoedigen, maar ze te ondersteunen voor de verouderde code van Delphi 1.
We kunnen toewijsbare getypte constanten in- of uitschakelen op de Compiler-pagina van het dialoogvenster Projectopties.
Als u toewijsbare typeconstanten voor een bepaald project hebt uitgeschakeld, geeft Delphi u bij het compileren van de vorige code de fout 'Linkerkant kan niet worden toegewezen' bij het compileren. U kunt echter een toewijsbare typeconstante maken door te verklaren:
{$ J +}const klikken: geheel getal = 1; {$ J-}
Daarom ziet de eerste voorbeeldcode er als volgt uit:
procedure TForm1.Button1Click (Afzender: TObject); const{$ J +} klikken: geheel getal = 1; // geen echte constante{$ J-}beginnen Form1.Caption: = IntToStr (klikken); klikken: = klikken + 1; einde;
Conclusie
Het is aan jou om te beslissen of je wilt dat getypte constanten al dan niet toewijsbaar zijn. Het belangrijkste hier is dat getypeerde constanten, behalve ideaal voor tellers, ook ideaal zijn om te maken componenten afwisselend zichtbaar of onzichtbaar, of we kunnen ze gebruiken om te schakelen tussen elke Booleaanse eigendommen. Getypte constanten kunnen ook worden gebruikt in de gebeurtenishandler van TTimer om bij te houden hoe vaak zelfs is getriggerd.