Array of enum Initialisieren

shrimps

Level-1
Beiträge
422
Reaktionspunkte
49
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
habe da wieder etwas gefunden, was ich nicht ordentlich umsetzen kann:

Ich def. ein Enum, dann ein Array mit diesem Enum und möchte das in einer Deklaration befüllen:

Wie geht das ?

LG
Shrimps

Code:
TYPE _enumTeach :(
    enum_teach_min,
    teach_learn ,
    teach_delete,
    teach_step_0,
    teach_step_next,
    teach_step_back,
    teach_step_max,
    teach_step_del,
    teach_step_ins,
    teach_run,
    teach_reset,
    enum_teach_max
);END_TYPE

aeTeachTFunc    : ARRAY [1..9] OF _enumTeach;

Nun mein Problem:
Am liebsten würde ich bei der Deklaration oder im Initstep folgendes sagen:

aeTeachTFunc := teach_step_next,teach_step_ins,teach_step_del, etc;

Mit oder ohne Klammer hab ichs nicht hinbekommen ??

Z.Zt. erledigt es eine einfache Zuweisung:

IF bTeachInit THEN
    aeTeachTFunc[1]  := teach_run;
    aeTeachTFunc[2]  := teach_reset;
    aeTeachTFunc[3]  := teach_learn;
    aeTeachTFunc[4]  := teach_step_0;
    aeTeachTFunc[5]  := teach_step_next;
    aeTeachTFunc[6]  := teach_step_back;
    aeTeachTFunc[7]  := teach_step_max;
    aeTeachTFunc[8]  := teach_step_del;
    aeTeachTFunc[9]  := teach_step_ins;
    bTeachInit := FALSE;
END_IF
 
Code:
aeTeachTFunc    : ARRAY [1..9] OF _enumTeach;

Nun mein Problem:
Am liebsten würde ich bei der Deklaration oder im Initstep folgendes sagen:

aeTeachTFunc := teach_step_next,teach_step_ins,teach_step_del, etc;
Geht das vielleicht so?:
Code:
aeTeachTFunc : ARRAY [1..9] OF _enumTeach := teach_run, teach_reset, teach_learn, teach_step_0, teach_step_next, teach_step_back, teach_step_max, teach_step_del, teach_step_ins;

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen,

da Enums in der Regel eigentlich nur Integer sind, und du die Nummerierung standardmäßig lässt könnte auch folgendes Funktionieren (ungetestet):

Code:
for i:=0 TO 8 DO
  aeTeachTFunc[i+1] := i;  // Erster Array Index ist 1, Erster Enum Wert ist 0.
END_FOR;

Was mich jedoch interessieren würde, wofür willst du das machen? Was ist das Ziel des Arrays?

Gruß Stefan
 
Hallo PN/DP,
das funktioniert wie von dir beschrieben !
Besten Dank.

Für mich bleibt dann noch offen, wie ich im laufenden Programm solch eine Zuweisung in einem Rutsch machen kann ?

@Gordrin
Das mit deiner Schleife ist mir klar, doch dann verliere ich den Sinn meiner Enums...
Ich möchte ja "literale" in beliebiger Reihenfolge den Arraypositionen zuweisen können.
Besten Dank trotzdem.

Der Grund meiner Sache:
Ich habe etliche Visutasten momentan als Bool zum Toggeln.
Diese haben je nach Verwendungszweck (Momentan fix) eine Funktion (Schrittkette/Enum) hinterlegt.
Diese frage ich später ab und daher weise ich dem Array zur identischen Tastenposition den gewünschten Enumschritt zu.
Wenn ich alles wieder auf INT setze verliere ich ja die Freiheit / Symbolik.

Das ganze ist ein eigenes Projekt basierend auf einem Fischertechnik Roboterarm mit eigenen Erweiterungen und einer Ansteuerung komplett von mir verbaut.
Somit kann ich von der grauen Programmiertheorie direkt alle Fehler in der Praxis machen / Lernen, was mir prompt auch passiert ist :)
Gerne kann man von mir Details erfahren, aber ich bin mir nicht schlüssig auf die Reaktionen hier im Forum...

LG
Shrimps
 
Okay stimmt das mit der unterschiedlichen, beliebigen Reihenfolge hab ich nicht beachtet. Das Projekt hört sich intressant an. Wenn ich mir deinen Ansatz zur zuweisung von Aktion -> Taste durchdenke bin ich sehr angetan, das ist eine super flexible und erweiterbare Lösung, die man auch hervorragend gegen Schnittstellen (Objektorientiert) implementieren und testen kann.

Gefällt mir!

Gruß Stefan
 
Zurück
Oben