¿Es posible declarar una constante de una matriz TANTO en Delphi como en FreePascal sin que los elementos sean constantes?
-
09-09-2019 - |
Pregunta
Hace mucho tiempo recuerdo que podía hacer esto en Turbo Pascal 7.
Quizás me equivoque y es algo que necesito aclarar, pero ¿es posible declarar un array de cadenas como constante?
Si no, ¿cuál es la opción/solución alternativa?
Lo que tengo ahora es:
type
TStates = (sOne, sTwo, sThree);
var
TArrayOfString: array [sOne..sThree] of string =
('State one', 'State two', 'State three');
pero quisiera reemplazar esa var con una constante.
Gracias
Editar 1:Agregué más código para aclarar mi pregunta.
Solución
Sólo reemplazando var const es perfectamente legal:
const
TArrayOfString: array [1..3] of string =
('String one', 'String two', 'String three');
Tengo curiosidad por qué su nombre identificador comienza con un T sin embargo. Estabas tratando de definir un tipo como este:
type
TArrayOfString = array [1..3] of string;
const
MyArrayOfString: TArrayOfString =
('String one', 'String two', 'String three');
No se puede tener una matriz de longitud variable (que yo sepa) como una constante, ni se puede tener de un tipo no definido.
Esto es con Delphi 2009. YMMV con FreePascal.
Otros consejos
En la antigua días Pascal / Delphi cuando escribió:
const
A : Integer = 5;
no ha definido una constante, sino una variable inicializada.
Se puede definir sin problema:
const
A : array [1..2] of string = ('a', 'b');
Sin embargo, las cadenas tienen que ser constantes también. Tienen que ser conocido en tiempo de compilación.
Lo mismo ocurre con:
var
A : array [1..2] of string = ('a', 'b');
Así que no se puede escribir:
var
B : string = 'hi';
A : array [1..2] of string = (B, 'b');
Debido a que B es un var. Sin embargo, se puede escribir:
const
B = 'hi'; // Even a typed constant does not work.
var
A : array [1..2] of string = (B, 'b');
Tenga en cuenta que la opción: "asignable mecanografiado constantes" (por defecto falso) es provisto para crear el tiempo antiguo escrito constantes que se pueden asignar. Es sólo existe para la compatibilidad hacia atrás, porque realmente quiere que sus constantes sean constantes.