È possibile dichiarare un const di una matrice in ENTRAMBI Delphi e FreePascal senza avere gli elementi siano costanti?

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

Domanda

Molto tempo fa mi ricordo ho potuto fare questo in Turbo Pascal 7.

Forse mi sbaglio ed è qualcosa che ho bisogno di chiarire, ma è possibile dichiarare un array di stringhe come una costante?

Se non ciò che è l'opzione / soluzione.

Quello che ho ora è:

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

, ma vorrebbe per sostituire che var con un const.

Grazie

Modifica 1 :. Aggiunto un po 'di codice per chiarire la mia domanda

È stato utile?

Soluzione

Basta sostituire var con const è perfettamente legale:

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

Sono curioso di sapere perchè il tuo nome identificativo inizia con un T però. Stavi cercando di definire un tipo come questo:

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

Non si può avere una matrice di lunghezza variabile (per quanto ne so) come un const, né si può avere di un tipo non definito.

Questo è con Delphi 2009. YMMV con FreePascal.

Altri suggerimenti

Nella vecchia giorno pascal / Delphi quando hai scritto:

const 
  A : Integer = 5;

Non è stata definita una costante, ma una variabile inizializzata.

È possibile definire senza problemi:

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

Ma le corde devono essere costanti troppo. Hanno bisogno di essere conosciuto al momento della compilazione.

Lo stesso vale per:

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

Quindi, non si può scrivere:

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

A causa B è una var. Ma si può scrivere:

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

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

Si noti che l'opzione: "assegnabili digitato costanti" (default false) è previsto per creare il vecchio tempo digitato le costanti che possono essere assegnati. E 'lì solo per compatibilità all'indietro, perché si vuole veramente i vostri costanti di essere costante.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top