Entwickler-Ecke

Sonstiges (Delphi) - Array[1..x-1] irgendwie möglich?


Niko S. - Mo 02.08.10 20:11
Titel: Array[1..x-1] irgendwie möglich?
Hi Leute,

also ich versuche eine Array zu deklarieren, die zur Laufzeit konstant ist aber im code optisch variabel ist.
Das ganze beruht auf folgender Idee:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
type
  TVitals = (
    vitHP = 1,
    vitMP,
    vitSP,
    vital_count
    );
...
var
  vital: array[1..(vital_count-1)] of Byte;


Sowas mag Delphi aber nicht.
Gibts andere möglichkeiten (außer Dyn Array)?

Gruß
Niko


Gausi - Mo 02.08.10 20:21

Das würde ich mit einer zusätzlichen Konstante machen

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
type
  TVitals = (
    vitHP = 1,
    vitMP,
    vitSP
   );
const vital_count = 3// muss natürlich mit TVitals konsistent sein

var
  vital: array[1..vital_count] of Byte;


Martok - Mo 02.08.10 20:48

Also für mich klingt das eher nach sowas:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
type
  TVitals = (
    vitHP = 1,
    vitMP,
    vitSP
    );
...
var
  vital: array[TVitals] of Byte;


jaenicke - Mo 02.08.10 22:06

Um mal den Faden noch weiterzuspinnen :mrgreen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
type
  TVitals = (vitHP, vitMP, vitSP);

const
  Vitals: array[TVitals] of string = ('Haltbare Packung''Miefige Packung''Sonderbare Packung');

// und im Code:
var
  MyVital: TVitals;
...
ShowMessage(Vitals[MyVital]);


Niko S. - Di 03.08.10 06:55

Dankeschön =)
Manchmal sind die Dinge einfacher als man denkt.


Flamefire - Di 03.08.10 10:09

auch wenn martoks und jaenickes lösung ein array von 0..x machen statt 1..x-1 (bei gleichem x)

aber darum ist es wichtig, hinzuschreiben, wofür man was braucht.