Ist es möglich, eine const eines Arrays in Delphi und Freepascal zu erklären, ohne dass die Elemente Konstanten sein?
-
09-09-2019 - |
Frage
Vor langer Zeit erinnere mich mich 7 dies in Turbo Pascal tun könnte.
Vielleicht bin ich falsch und es ist etwas, was ich klarstellen müssen, aber ist es möglich, ein Array von Strings als eine Konstante zu deklarieren?
Wenn nicht, was ist die Option / Abhilfe.
Was ich jetzt habe, ist:
type
TStates = (sOne, sTwo, sThree);
var
TArrayOfString: array [sOne..sThree] of string =
('State one', 'State two', 'State three');
aber würde wollen, dass var mit einem const ersetzen.
Danke
Bearbeiten 1 :. Hinzugefügt etwas mehr Code, meine Frage zu klären
Lösung
Just ersetzt var mit const ist vollkommen legal:
const
TArrayOfString: array [1..3] of string =
('String one', 'String two', 'String three');
Ich bin neugierig, warum Ihr Bezeichnernamen mit einem beginnt T though. Sind Sie versuchen, eine Art wie folgt zu definieren:
type
TArrayOfString = array [1..3] of string;
const
MyArrayOfString: TArrayOfString =
('String one', 'String two', 'String three');
Sie können nicht eine variable Länge Array (AFAIK) als const, noch können Sie es von einem nicht definierten Typ.
Dies ist mit Delphi 2009 YMMV mit Freepascal.
Andere Tipps
In altem Tag pascal / delphi, wenn Sie schreibt:
const
A : Integer = 5;
Sie haben keine Konstante definieren, sondern einen initialisierten Variablen.
Sie können problemlos definieren:
const
A : array [1..2] of string = ('a', 'b');
Aber die Saiten haben Konstanten zu sein. Sie müssen zum Zeitpunkt der Kompilierung bekannt sein.
Das gleiche gilt für:
var
A : array [1..2] of string = ('a', 'b');
So können Sie nicht schreiben:
var
B : string = 'hi';
A : array [1..2] of string = (B, 'b');
Da B ein var ist. Aber man kann schreiben:
const
B = 'hi'; // Even a typed constant does not work.
var
A : array [1..2] of string = (B, 'b');
Beachten Sie, dass die Option: „zuweisbare Konstanten eingegeben“ (default false) zur Verfügung gestellt wird, um die alten Zeitkonstanten erstellen eingegeben, die zugeordnet werden können. Es ist nur da für die Abwärtskompatibilität, weil Sie wirklich Ihre Konstanten wollen, konstant sein.