TIA CASE - Schleife: OF DB_Beispiel.INT ???

Münchnerjunge

Level-1
Beiträge
314
Reaktionspunkte
38
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

hat jemand ähnliches schon einmal versucht? Leider nimmt mein TIA das grade nicht an, zeigt mir den Fehler " Ungültiger Ausdruck '.' " und verweißt auf den markierten Punkt. Geht das überhaupt? Hardware ist ne 1500er, sollte aber keine Grundelgenden Unterschiede geben. Version V13.

Code:
[I]CASE    [/I]BYTE_TO_INT(DB_Beispiel_1.BEISPIEL[0].BYTE)    [I]OF
[/I]
              DB_BEISPIEL_2[COLOR=#ff0000][SIZE=4][I][U][B].[/B][/U][/I][/SIZE][/COLOR]INT_1 : 
                             BEISPIEL_REAL := 2.0;

              DB_BEISPIEL_2.INT_2 : 
                             BEISPIEL_REAL := 14.45;

              DB_BEISPIEL_2.INT_3 : 
                             BEISPIEL_BIT := TRUE;

[I]ELSE
[/I]
              BEISPIEL_BIT := FALSE;

[I]END_CASE;[/I]

Vielen Dank im Voraus!
 
Was soll das werden?

Vor dem Doppelpunkt sollte eine Int oder eine Constante stehen, du hast aber eine Variable dort stehen.
Das hab ich noch nie versucht, könnte mit aber denken, dass das nicht geht.


Code:
[I]CASE    [/I]BYTE_TO_INT(DB_Beispiel_1.BEISPIEL[0].BYTE)    [I]OF
[/I]
              10 : 
                             BEISPIEL_REAL := 2.0;

              20 : 
                             BEISPIEL_REAL := 14.45;

              30 : 
                             BEISPIEL_BIT := TRUE;

[I]ELSE
[/I]
              BEISPIEL_BIT := FALSE;

[I]END_CASE;[/I]
 
Aus der Hilfe von TIA (F1 auf Case)

Beschreibung
Mit der Anweisung "Mehrfach verzweigen" bearbeiten Sie abhängig vom Wert eines numerischen Ausdrucks eine von mehreren Anweisungsfolgen.
Der Wert des Ausdrucks muss eine Ganzzahl sein. Bei der Ausführung der Anweisung wird der Wert des Ausdrucks mit den Werten mehrerer Konstanten verglichen. Wenn der Wert des Ausdrucks mit dem Wert einer Konstante übereinstimmt, werden die Anweisungen ausgeführt, die direkt nach dieser Konstante programmiert sind. Die Konstanten können dabei die folgenden Werte annehmen:
Eine Ganzzahl (z. B. 5)
Ein Bereich aus Ganzzahlen (z. B. 15..20)
Eine Aufzählung aus Ganzzahlen und Bereichen (z. B. 10,11,15..20)
Syntax
Für die Anweisung "Mehrfach verzweigen" wird die folgende Syntax verwendet:
SCL
CASE <Ausdruck> OF
<Konstante1>: <Anweisungen1>
<Konstante2>: <Anweisungen2>
<KonstanteX>: <AnweisungenX>; // X >= 3
ELSE <Anweisungen0>
END_CASE;

 
Wow, vielen Dank für die schnellen Antworten, auch wenn das ziemlich enttäuschend ist, da mir das deutlich mehr Arbeit macht.

Schönen Abend noch!
 
Mit Variablen wäre das IF...THEN...ELSIF...ELSIF...

Ist ja auch nicht soviel mehr Schreibarbeit und gehen auch andere Formate als INT.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das wäre es dann bei case aber auch, denn das ist nichts anderes.
Da steht auch nur wenn die Variable1 = 10 dann ...

Mit if kannst Du dagegen if variable1 = variable2 schreiben.
 
Korrekt, daher ja auch die Frage bzgl der CASE-Schleife mit Variablen statt Konstanten, dann wäre ich nämlich recht schnell fertig gewesen, da in den Variablen nicht immer 10 steht, sondern je nach Fall etwas anderes ;-)

So ich mach Schluss für heute, bin meiner Zeit zwei Stunden voraus und morgen geht es früh weiter.

Beste Grüße in den Nordharz und nochmals Danke für die Mühe.
 
Erstens ist Case keine Schleife sondern auch nur ne einfache Verzweigung und 2. bist Du dann mit IF so schnell fertig, wie Du es von Case gerade erwartest. Denn da geht der Vergleich der Variablen.
Case bewirkt ansonsten genau das Gleiche wie IF, nur das der Entscheider auf INT und Vergleiche mit Konstanten begrenzt ist.



Grüße zurück, allerdings gerade aus Polen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Falls Du wirklich 'ne Schleife brauchen solltest, hast Du Dir mal Do..WHILE oder REPEAT angesehen?
Die werden als Schleifen gern übersehen und bieten im Gegensatz zu FOR variablere Bedingungen für die Schleifenwiederholung.
 
Zurück
Oben