¿Es posible declarar una constante de una matriz TANTO en Delphi como en FreePascal sin que los elementos sean constantes?

StackOverflow https://stackoverflow.com/questions/749258

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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top