É possível declarar um const de uma matriz em Delphi e FreePascal sem ter os elementos ser constantes?

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

Pergunta

Há muito tempo atrás eu me lembro que eu poderia fazer isso em Turbo Pascal 7.

Talvez eu esteja errado e é algo que eu preciso esclarecer, mas é possível declarar uma matriz de strings como uma constante?

Se não, qual é a opção / solução alternativa.

O que eu tenho agora é:

type
  TStates = (sOne, sTwo, sThree);
var
  TArrayOfString: array [sOne..sThree] of string = 
     ('State one', 'State two', 'State three');

mas gostaria de substituir a var com um const.

Graças

Editar 1 :. Adicionado mais algum código para esclarecer a minha pergunta

Foi útil?

Solução

Apenas substituindo var com const é perfeitamente legal:

const
  TArrayOfString: array [1..3] of string =
     ('String one', 'String two', 'String three');

Estou curioso por que seu identificador nome começa com um T embora. Você estava tentando definir um tipo como este:

type
  TArrayOfString = array [1..3] of string;
const
  MyArrayOfString: TArrayOfString =
     ('String one', 'String two', 'String three');

Você não pode ter uma matriz de comprimento variável (AFAIK) como um const, nem pode tê-lo de um tipo indefinido.

Este é com Delphi 2009. YMMV com FreePascal.

Outras dicas

No dia de idade pascal / delphi quando escreveu:

const 
  A : Integer = 5;

Você não definir uma constante, mas uma variável inicializada.

Você pode definir sem problema:

const
  A : array [1..2] of string = ('a', 'b');

Mas as cordas têm de ser constantes também. Eles precisam ser conhecido em tempo de compilação.

O mesmo vale para:

var
  A : array [1..2] of string = ('a', 'b');

Então, você não pode escrever:

var
  B : string = 'hi';
  A : array [1..2] of string = (B, 'b');

Porque B é uma var. Mas você pode escrever:

const
  B = 'hi'; // Even a typed constant does not work.

var
  A : array [1..2] of string = (B, 'b');

Note que a opção: "Assignable digitado constantes" (falso padrão) é fornecido para criar o velho tempo constantes digitadas que podem ser atribuídos. É apenas para compatibilidade com versões anteriores, porque você realmente quer que seus constantes para ser constante.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top