Ist es möglich, eine const eines Arrays in Delphi und Freepascal zu erklären, ohne dass die Elemente Konstanten sein?

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

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

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top