Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi statisches Array mit Konstanten (https://www.delphipraxis.net/150983-statisches-array-mit-konstanten.html)

Helmi 2. Mai 2010 12:27


statisches Array mit Konstanten
 
Hallo,

ich steh glaub ich gerade auf dem Schlauch:

Ich möchte ein statisches Array mit Konstanten beschreiben:

Delphi-Quellcode:
const
  test: array[0..4] of (const_Allgemein, const_Kanal, const_Achse, const_Antrieb, const_Setting);
Die "const_Allgemein" etc. sind Strings.

Nur leider bekomm ich bei dieser Schreibweise folgenden Fehler:
Zitat:

[Fehler] MainUnit.pas(292): '=' erwartet, aber ';' gefunden
Das Ganze unter "var" geschrieben:
Delphi-Quellcode:
var
  test: array[0..4] of (const_Allgemein, const_Kanal, const_Achse, const_Antrieb, const_Setting);
wird nicht angemeckert, dafür würd dann bei der Verwendung im Code von "const_Allgemein" (als auch bei den anderen)
der Fehler:
Zitat:

[Fehler] MainUnit.pas(307): Inkompatible Typen: 'String' und 'Enumeration'
gemeldet.

Kann mir jemand sagen, ob:
1. Das überhaupt geht? (also Konstanten in ein statisches Array)
2. Falls es geht, was ich falsch mache und wie es sein sollte

sx2008 2. Mai 2010 12:37

Re: statisches Array mit Konstanten
 
Bei Pascal/Delphi gilt allgemein: immer erst die Datentypen deklarieren:
Delphi-Quellcode:
type
  TConfigItem = (const_Allgemein, const_Kanal, const_Achse, const_Antrieb, const_Setting);
  TConfigArray = array[TConfigItem] of string;
Dann darf man ein Konstantenarray definieren:
Delphi-Quellcode:
const
  test : TConfigArray = (
  'allg',
  'Kanal 2',
  'Achse 0',
  'motor',
  '50'
  );
ungetestet, da kein Delphi auf dem Rechner

lbccaleb 2. Mai 2010 12:38

Re: statisches Array mit Konstanten
 
Warum nicht so??

Delphi-Quellcode:
 type
  Ttest = (const_Allgemein, const_Kanal, const_Achse, const_Antrieb, const_Setting);

Flips 2. Mai 2010 12:41

Re: statisches Array mit Konstanten
 
Zitat:

Zitat von lbccaleb
Warum nicht so??

Delphi-Quellcode:
 type
  Ttest = (const_Allgemein, const_Kanal, const_Achse, const_Antrieb, const_Setting);

Naja ich bin mir nichtmehr sicher (Delphi ist schon etwas her bei mir ;-) ), aber dabei handelt es sich doch um eine Enumeration und nicht um ein Array.

alzaimar 2. Mai 2010 12:43

Re: statisches Array mit Konstanten
 
Zitat:

Zitat von sx2008
Bei Pascal/Delphi gilt allgemein: immer erst die Datentypen deklarieren:
...
Dann darf man ein Konstantenarray definieren:
...

Nö, Stimmt nicht.
Geht auch so:
Delphi-Quellcode:
Const
  test : Array [TConfigItem] Of String = ('A','B' (* usw *) ,'Z');

Helmi 2. Mai 2010 13:39

Re: statisches Array mit Konstanten
 
Hallo,

Danke für die Antworten.

Ich glaube aber ich bin missverstanden worden (oder falsch ausgedrückt):

Ich hab die Konstanten "const_Allgemein", "const_Kanal", "const_Achse", "const_Antrieb", "const_Setting" mit Strings definiert.

Nun wollte ich diese Konstanten in einem Array zusammenfügen um über das Array mit einer Schleife zu laufen:
Delphi-Quellcode:
for i := low(const_array) to high(const_array) do
  begin
    S := const_array(i);

    { ... }

  end;
Wenn das ginge so könnt ich zwei Arrays in einer Schleife abfragen (also das Konstanten-Array und noch ein anderes Array)

Teekeks 2. Mai 2010 13:52

Re: statisches Array mit Konstanten
 
Na dann so:
Delphi-Quellcode:
Const
  test : Array [0..4] Of String = (const_Allgemein, const_Kanal, const_Achse, const_Antrieb, const_Setting);
Das sollte so gehen...

Helmi 2. Mai 2010 14:02

Re: statisches Array mit Konstanten
 
Zitat:

Zitat von Teekeks
Na dann so:
Delphi-Quellcode:
Const
  test : Array [0..4] Of String = (const_Allgemein, const_Kanal, const_Achse, const_Antrieb, const_Setting);
Das sollte so gehen...

Danke!
Das funktioniert!
Ich dachte ich hätte jede Kombination ausprobiert - nur diese nicht!

Fussball-Robby 2. Mai 2010 14:05

Re: statisches Array mit Konstanten
 
Zur Vervollständigung, das ist ja auch die allgemeine Form
Delphi-Quellcode:
const
  VarName: VarType = #WERT;
Gruß :wink:

DeddyH 2. Mai 2010 14:27

Re: statisches Array mit Konstanten
 
Zitat:

Zitat von Fussball-Robby
..., das ist ja auch die allgemeine Form

Für typisierte Konstanten, um genau zu sein ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf