Seite 1 von 1

[V1.6.0 IP 3] Direkte Verwendung von Zahlen bei Funktionen in Custom-Logik

Verfasst: Do Jun 11, 2020 10:43 pm
von Eraser
Hallo,

ich habe da was im Hinterkopf, dass es einmal der Fall war, dass wenn man Zahlen (0, 1, 2, ...) oder Zustände (True, False) bei einer Funktion in einer Custom-Logik verwendet, dass man diese nicht direkt in die Funktion schreiben soll, sondern dafür vorher Konstanten dafür bei den Levels definieren und dann diese verwenden soll.

Zum Beispiel dass man dies
["And",["$Input","$KonstTrue"],"$Output"]
verwenden soll anstatt von
["And",["$Input",1],"$Output"]
da dies nicht funktioniert.

War das der Fall bei einer älteren TW-Version und ist jetzt nicht mehr der Fall oder doch noch?
Oder galt das nur bei gewissen Funktionen?

Habe mir diese Frage gerade bei folgender Funktion gestellt und ob dies so funktioniert:

["Latch",0,"$Szene","$Freigabe",1]

Wird hier bei Freigabe eine 0 auf die Veriable Szene (Integer) geschrieben?
Geht das auch wenn Szene eine bool-Variable wäre?
Oder muss man unter Level eine Konstante Konst0 mit dem Wert 0 definieren und diese verwenden?

Re: [V1.6.0 IP 3] Direkte Verwendung von Zahlen bei Funktionen in Custom-Logik

Verfasst: Fr Jun 12, 2020 4:23 am
von fechter65
Hallo Wolfgang

Kurz: Ich bin der Meinung, dass Werte weiterhin nur in der Form von "Variablen" an Modulbausteine übergeben werden dürfen.
Meines Wissens gilt folgendes (Auszug aus zwei Texten, die ich erstellt habe, deshalb etwas länglich):

**************
Die Elemente des Modulbaustein-Arrays

Erstes Element ist immer die Modulkennung, d.h. ein in Anführungszeichen gesetzter Text, zum Beispiel “And” oder “Latch”.
Der Modulkennung folgen - in einer vorgegebenen Reihenfolge und jeweils getrennt durch ein Komma - zusätzliche Elemente, welche die Ein- und Ausgänge des Modulbausteins bedienen.

Zur Bedienung der zusätzlichen Ein- und Ausgangselemente müssen in aller Regel Variablen (bspw. "$In" oder "$Out") verwendet werden. Falls an einem Eingangs- oder Ausgangselement mehr als ein Wert übergeben werden kann, werden die Variablen in der Form eines Arrays (bspw. ["$In1", "$In2",... ,"$In_n"]) zusammengefasst oder es wird - anstelle des Arrays - eine Multivariable (bspw. $VAR<Input!>) verwendet.
Der Datentyp der jeweiligen Variablen muss den Vorgaben des Modulbausteins für dieses Ein- oder Ausgangselement entsprechen.

Vom Grundsatz, dass den Elementen eines Modulbausteins-Arrays nur Variablen übergeben werden dürfen, kann in folgenden Fällen abgewichen werden:
  • es darf eine blosse 0 (d.h. ohne Anführungszeichen) übergeben werden, wenn ein Eingang des Modulbausteins nicht bedient oder ein Ausgang nicht abgefragt werden soll,
  • bei Optionen wie bspw. beim →Latch-Modulbaustein kann ebenfalls am entsprechenden Eingang direkt eine Integerzahl übergeben werden (im folgenden Beispiel wird der Wert 3 als Option übergeben: ["Latch","$true","$FreigabeWechsel","$Freigabe",3])
Um bequem und einheitlich konstante Werte, wie bspw. TRUE oder FALSE, an Modul-Bausteine zu übergeben, hat es sich bewährt, im LEVEL-Array entsprechende Konstanten als Variablen zu definieren. Diese Praxis ist aber nicht zwingend. Ein Beispiel einer solchen Definition:

Code: Alles auswählen

"Level": [
// Variablen mit konstanten Werten
    ["$true","bool",true],
    ["$false","bool",false],
// Weitere Variblen 
  ],
*************************

Wird bei einem Multiplexer ein ein mit 0 bezeichneter Eingang selektiert, hängt das Ergebnis am Ausgang vom Datentyp ab:
  • bool: false
  • integer: 0
  • float: 0.0
  • string: "" (d.h. Leerstring)
*************************

Gruss
Diego