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

Ergebnis 1 bis 5 von 5

Thema: SCL-Compiler und Case-Anweisung

  1. #1
    Registriert seit
    25.07.2008
    Beiträge
    48
    Danke
    4
    Erhielt 4 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi miteinander,

    was auch cool ist:

    case x of

    1: xxx;

    2: yyy;

    2: zzz;

    end_case;

    Der Compiler schnallt nicht dass es die 2 doppelt gibt. Er übersetzt ohne mucks und zur Laufzeit wird halt der erste Eintrag ausgeführt...


    Gruß

    Herdi
    Zitieren Zitieren SCL-Compiler und Case-Anweisung  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.710
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    ... daran kann ich nichts böses erkennen. Das ist (für mich) die Spielregel des CASE-Befehls. Wenn man das nicht haben möchte, dann gäbe es ja immer noch die Möglichkeit mit IF..THEN zu arbeiten.

    Gruß
    LL

  3. #3
    herdi ist offline Benutzer
    Themenstarter
    Registriert seit
    25.07.2008
    Beiträge
    48
    Danke
    4
    Erhielt 4 Danke für 2 Beiträge

    Standard

    Also (für mich) ist das durchaus als Fehler zu sehen.

    Die Fälle der CASE-Anweisung sollten ja eindeutig sein und ein mehrfaches verwenden eines Falles eindeutig ein Programmierfehler der aber definitv vom Compiler erkannt werden müsste.

    Zumindest alles was mir compilermässig momentan zur Hand ist (Borland C++, Codesys, B&R) lässt sowas nicht durchgehen. Außer der S7-SCL-Compiler...
    Geändert von herdi (09.09.2008 um 16:19 Uhr)

  4. #4
    Registriert seit
    28.10.2005
    Ort
    Ottweiler, Saar
    Beiträge
    940
    Danke
    259
    Erhielt 124 Danke für 109 Beiträge

    Standard

    herdi hat es schon gesagt, aber da ich es schon getippt habe:

    Zumindest bei Delphi setzt es in diesem Fall einen Fehler, und das
    zu Recht, denn es handelt sich ja um Konstanten, die als Sprunglabels
    dienen. (zwei Labels mit gleichem Namen halt).

    Und mit der IF...THEN-Konstruktion hat der Programmierer dieselbe
    Fehlermöglichkeit, nur der Compiler darf hier überhaupt nicht meckern.

  5. #5
    Registriert seit
    10.09.2008
    Beiträge
    1
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Der SCL Compiler lehnt sich in seinem Verhalten an das in der IEC 61131-3 Norm für die Sprache ST beschriebene Verhalten an. Dort steht, dass die Anweisungen, die nach dem ersten gefundenen, passenden CASE-Label stehen, ausgeführt werden. Kein Fehler soll/muß ausgegeben werden. Bei einem Beispiel, wie:

    case i of
    case 2: ...;
    ...;
    case 10..18: ...;
    case 0..100: ...;
    ...;
    end_case;

    wäre es auch nicht sinnvoll, um noch weitere Spezialfälle einzufügen, jedesmal die Zeile case 0..100 auch abzuändern. Andere Sprachen verhalten sich da anders, aber so ist das mit anderen Sprachen.
    Zitieren Zitieren CASE-Anweisung sollten ja eindeutig sein...  

Ähnliche Themen

  1. Schrittketten mit case
    Von Bensen83 im Forum CODESYS und IEC61131
    Antworten: 23
    Letzter Beitrag: 10.09.2014, 07:06
  2. Jeder Case ein eigenes Programm
    Von Bensen83 im Forum CODESYS und IEC61131
    Antworten: 8
    Letzter Beitrag: 08.09.2011, 13:31
  3. Wo steht die case struktur
    Von Bensen83 im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 06.09.2011, 17:05
  4. CASE-Anweisung von SCL auf KOP
    Von adonismensch im Forum Programmierstrategien
    Antworten: 8
    Letzter Beitrag: 25.09.2009, 12:41
  5. Switch CASE Anweisung
    Von sweber im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 14.12.2006, 22:49

Lesezeichen

Berechtigungen

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