Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 5 von 5

Thema: Array of enum Initialisieren

  1. #1
    Registriert seit
    16.03.2014
    Beiträge
    358
    Danke
    74
    Erhielt 45 Danke für 38 Beiträge

    Standard


    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
    Zitieren Zitieren Array of enum Initialisieren  

  2. #2
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.163
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Zitat Zitat von shrimps Beitrag anzeigen
    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
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    shrimps (06.02.2015)

  4. #3
    Registriert seit
    21.09.2011
    Beiträge
    13
    Danke
    2
    Erhielt 4 Danke für 4 Beiträge

    Standard

    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

  5. #4
    shrimps ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    16.03.2014
    Beiträge
    358
    Danke
    74
    Erhielt 45 Danke für 38 Beiträge

    Standard

    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

  6. #5
    Registriert seit
    21.09.2011
    Beiträge
    13
    Danke
    2
    Erhielt 4 Danke für 4 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    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

  7. Folgender Benutzer sagt Danke zu Gordrin für den nützlichen Beitrag:

    shrimps (06.02.2015)

Ähnliche Themen

  1. 2-dimensionales Array initialisieren
    Von mailmir im Forum Programmierstrategien
    Antworten: 1
    Letzter Beitrag: 18.08.2014, 17:56
  2. Array OF REAL initialisieren
    Von bass im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 14.08.2014, 17:36
  3. an ARRAY of UDT in DB initialisieren
    Von niknim im Forum Programmierstrategien
    Antworten: 2
    Letzter Beitrag: 07.02.2014, 15:31
  4. Array Initialisieren
    Von Hans_J im Forum CODESYS und IEC61131
    Antworten: 7
    Letzter Beitrag: 19.11.2013, 13:20
  5. array bei deklaration initialisieren
    Von alb im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 01.12.2011, 15:50

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •