Wann Delphi Ruft eine Ereignisbehandlungsroutine auf, werden die alten Werte lokaler Variablen gelöscht. Was ist, wenn wir verfolgen möchten, wie oft auf eine Schaltfläche geklickt wurde? Wir könnten die Werte durch Verwendung einer Variablen auf Einheitenebene beibehalten, aber es ist im Allgemeinen eine gute Idee, Variablen auf Einheitenebene nur für den Austausch von Informationen zu reservieren. Was wir brauchen, werden in Delphi normalerweise als statische Variablen oder typisierte Konstanten bezeichnet.
Variable oder Konstante
Typisierte Konstanten können mit initialisierten Variablen verglichen werden - Variablen, deren Werte beim Eintritt in ihren Block definiert werden (normalerweise Ereignishandler). Eine solche Variable wird nur initialisiert, wenn das Programm gestartet wird. Danach bleibt der Wert einer typisierten Konstante zwischen aufeinanderfolgenden Aufrufen ihrer Prozeduren bestehen.
Die Verwendung typisierter Konstanten ist eine sehr saubere Methode zum Implementieren automatisch initialisierter Variablen. Um diese Variablen ohne typisierte Konstanten zu implementieren, müssen Sie einen Initialisierungsabschnitt erstellen, der den Wert jeder initialisierten Variablen festlegt.
Variablentypkonstanten
Obwohl wir typisierte Konstanten im const-Abschnitt einer Prozedur deklarieren, ist es wichtig zu bedenken, dass sie keine Konstanten sind. Wenn Sie zu einem beliebigen Zeitpunkt in Ihrer Anwendung Zugriff auf den Bezeichner für eine eingegebene Konstante haben, können Sie deren Wert ändern.
Um eingegebene Konstanten bei der Arbeit anzuzeigen, fügen Sie eine Schaltfläche in ein leeres Formular ein und weisen Sie dem OnClick-Ereignishandler den folgenden Code zu:
Verfahren TForm1.Button1Click (Absender: TObject); const Klicks: Integer = 1; // keine wahre KonstanteStart Form1.Caption: = IntToStr (Klicks); Klicks: = Klicks + 1; Ende;
Beachten Sie, dass jedes Mal, wenn Sie auf die Schaltfläche klicken, die Bildunterschriften stetig erhöht werden.
Versuchen Sie nun den folgenden Code:
Verfahren TForm1.Button1Click (Absender: TObject); var Klicks: Integer; Start Form1.Caption: = IntToStr (Klicks); Klicks: = Klicks + 1; Ende;
Wir verwenden jetzt eine nicht initialisierte Variable für den Klickzähler. Beachten Sie den seltsamen Wert in der Formularbeschriftung, nachdem Sie auf die Schaltfläche geklickt haben.
Konstante typisierte Konstanten
Sie müssen zustimmen, dass die Vorstellung von veränderbaren Konstanten etwas seltsam klingt. In 32-Bit-Versionen von Delphi hat Borland beschlossen, von ihrer Verwendung abzuraten, sie jedoch für Legacy-Code von Delphi 1 zu unterstützen.
Wir können zuweisbare typisierte Konstanten auf der Compilerseite des Dialogfelds Projektoptionen aktivieren oder deaktivieren.
Wenn Sie Zuweisbare typisierte Konstanten für ein bestimmtes Projekt deaktiviert haben, gibt Delphi beim Kompilieren des vorherigen Codes beim Kompilieren den Fehler "Die linke Seite kann nicht zugewiesen werden" aus. Sie können jedoch eine zuweisbare typisierte Konstante erstellen, indem Sie Folgendes deklarieren:
{$ J +}const Klicks: Integer = 1; {$ J-}
Daher sieht der erste Beispielcode folgendermaßen aus:
Verfahren TForm1.Button1Click (Absender: TObject); const{$ J +} Klicks: Integer = 1; // keine wahre Konstante{$ J-}Start Form1.Caption: = IntToStr (Klicks); Klicks: = Klicks + 1; Ende;
Fazit
Es liegt an Ihnen, zu entscheiden, ob typisierte Konstanten zuweisbar sein sollen oder nicht. Das Wichtigste dabei ist, dass typisierte Konstanten nicht nur ideal für Zähler sind, sondern auch ideal für die Erstellung Komponenten abwechselnd sichtbar oder unsichtbar, oder wir können sie zum Umschalten zwischen beliebigen Booleschen Werten verwenden Eigenschaften. Typisierte Konstanten können auch im TTimer-Ereignishandler verwendet werden, um zu verfolgen, wie oft sogar ausgelöst wurde.