Moin zusammen,
ich habe ein Verständnisproblem mit dem Scriptinterpreter.
In der Anwendungsprogrammierung schreibe ich normalerweise in mehreren Zeilen und kann unabhängige Entscheidungsbäume erstellen.
Beispiel:
Wenn [Bedingung1] dann [Kommando1] ansonsten [AnderesKommando1]
Wenn [Bedingung2] dann [Kommando2] ansonsten [AnderesKommando2]
Unter jeder anderen Programmiersprache werden beide Entscheidungsbäume nacheinander abgearbeitet.
Unter VDJScript scheint das so nicht zu funktionieren.
Hier mal mein aktuelles Script, bei dem ich auf das Problem laufe:
#########################################
var_greater "my_mvol_min" 23 ? set "my_mvol_min" 23 : nothing
var_smaller "my_mvol_max" 53 ? set "my_mvol_max" 53 : nothing
toggle "my_mute" &
var "my_mute" ?
set "my_mvol_max" '`deck 1 level' &
get_var "my_mvol_min" &
param_cast "percentage" &
deck 1 level &
djc_mic on :
set "my_mvol_min" '`deck 1 level' &
get_var "my_mvol_max" &
param_cast "percentage" &
deck 1 level &
djc_mic off
####################################
Die Zeilen 1 und 2 sollen völlig unabhänig von dem nachfolgendem Entscheidungsbaum ausgeführt werden.
Der Interpreter erkennt aber alles nach dem ersten ":" als Komandobaum zur ersten Bedingung in Zeile 1.
Wie kann ich das verhindern?
ich habe ein Verständnisproblem mit dem Scriptinterpreter.
In der Anwendungsprogrammierung schreibe ich normalerweise in mehreren Zeilen und kann unabhängige Entscheidungsbäume erstellen.
Beispiel:
Wenn [Bedingung1] dann [Kommando1] ansonsten [AnderesKommando1]
Wenn [Bedingung2] dann [Kommando2] ansonsten [AnderesKommando2]
Unter jeder anderen Programmiersprache werden beide Entscheidungsbäume nacheinander abgearbeitet.
Unter VDJScript scheint das so nicht zu funktionieren.
Hier mal mein aktuelles Script, bei dem ich auf das Problem laufe:
#########################################
var_greater "my_mvol_min" 23 ? set "my_mvol_min" 23 : nothing
var_smaller "my_mvol_max" 53 ? set "my_mvol_max" 53 : nothing
toggle "my_mute" &
var "my_mute" ?
set "my_mvol_max" '`deck 1 level' &
get_var "my_mvol_min" &
param_cast "percentage" &
deck 1 level &
djc_mic on :
set "my_mvol_min" '`deck 1 level' &
get_var "my_mvol_max" &
param_cast "percentage" &
deck 1 level &
djc_mic off
####################################
Die Zeilen 1 und 2 sollen völlig unabhänig von dem nachfolgendem Entscheidungsbaum ausgeführt werden.
Der Interpreter erkennt aber alles nach dem ersten ":" als Komandobaum zur ersten Bedingung in Zeile 1.
Wie kann ich das verhindern?
Mensajes Tue 24 Jul 18 @ 10:05 am
Du kannst das ganze ja weiter miteinander verknüpfen
Wenn [Bedingung1] ? [Kommando1] : Wenn [Bedingung2] ? [Kommando2] : [AnderesKommando2] : [AnderesKommando1]
var_greater "my_mvol_min" 23 ? set "my_mvol_min" 23 ?
var_smaller "my_mvol_max" 53 ? set "my_mvol_max" 53 : nothing
Wenn du es dann völlig unabhängig vom weiteren Skriptteil haben willst, dann würde ich es generell irgendwo separat auf einen Button legen.
So wie es aussieht, willst du dir damit ja nur einmalig zwei Grenzwerte setzen. Dann kannst du das auch im ONINIT Key des Keyboardmappings legen.
Wenn [Bedingung1] ? [Kommando1] : Wenn [Bedingung2] ? [Kommando2] : [AnderesKommando2] : [AnderesKommando1]
var_greater "my_mvol_min" 23 ? set "my_mvol_min" 23 ?
var_smaller "my_mvol_max" 53 ? set "my_mvol_max" 53 : nothing
Wenn du es dann völlig unabhängig vom weiteren Skriptteil haben willst, dann würde ich es generell irgendwo separat auf einen Button legen.
So wie es aussieht, willst du dir damit ja nur einmalig zwei Grenzwerte setzen. Dann kannst du das auch im ONINIT Key des Keyboardmappings legen.
Mensajes Tue 24 Jul 18 @ 11:02 am
Hi,
"einmalig" ist nicht korrekt.
Das Script setzt auf knopfdruck die Lautstärke des Deck 1 auf einen Max oder Min Wert (Toggle).
Nun habe ich festgestellt, daß zwei bestimmte Werte die obergrenze, bzw. Untergrenze darstellen, die nach möglichkeit nicht passiert werden sollen.
Verschiebe ich den Regler innerhalb dieser Grenzen, so merkt das Script sich diese Werte für den nächsten Toggle.
Sollte ein Wert aber aus der Grenze gelaufen sein, bsp. Max-Wert liegt plötzlich bei 0, so soll die Prüfung zuschlagen und wieder den Grenzwert 53 setzen.
Daher "muss" die Prüfung jedesmal unabhängig von dem Rest der Routine laufen.
Wenn ich es also richtig verstehe, ist VDJScript kein zeilenorientierter Batchinterpreter -was sehr schade ist.
"einmalig" ist nicht korrekt.
Das Script setzt auf knopfdruck die Lautstärke des Deck 1 auf einen Max oder Min Wert (Toggle).
Nun habe ich festgestellt, daß zwei bestimmte Werte die obergrenze, bzw. Untergrenze darstellen, die nach möglichkeit nicht passiert werden sollen.
Verschiebe ich den Regler innerhalb dieser Grenzen, so merkt das Script sich diese Werte für den nächsten Toggle.
Sollte ein Wert aber aus der Grenze gelaufen sein, bsp. Max-Wert liegt plötzlich bei 0, so soll die Prüfung zuschlagen und wieder den Grenzwert 53 setzen.
Daher "muss" die Prüfung jedesmal unabhängig von dem Rest der Routine laufen.
Wenn ich es also richtig verstehe, ist VDJScript kein zeilenorientierter Batchinterpreter -was sehr schade ist.
Mensajes Thu 26 Jul 18 @ 12:03 pm
Dann bau das ganze doch in den Scriptablauf mit ein und prüfe, bevor du das Decklevel setzt.
Das nachfolgende wird wahrscheinlich nicht ganz funktionieren, weil ich nicht genau verstehe was du machen willst.
Aber anpassen kannst du es dir dann ja selbst.
toggle "my_mute" &
var "my_mute" ?
var_greater "my_mvol_min" 23 ? set "my_mvol_min" 23 :
set "my_mvol_max" '`deck 1 level' &
get_var "my_mvol_min" &
param_cast "percentage" &
deck 1 level &
djc_mic on :
var_smaller "my_mvol_max" 53 ? set "my_mvol_max" 53 :
set "my_mvol_min" '`deck 1 level' &
get_var "my_mvol_max" &
param_cast "percentage" &
deck 1 level &
djc_mic off
Damit sollte erst der zustand der Variable geprüft werden, wenn er kleiner als der von dir eingestellte Wert ist wird sie neu gesetzt. Wenn nicht, dann wird mit der aktuellen Einstellung weiter gearbeitet. So zumindest die Idee dahinter.
Das nachfolgende wird wahrscheinlich nicht ganz funktionieren, weil ich nicht genau verstehe was du machen willst.
Aber anpassen kannst du es dir dann ja selbst.
toggle "my_mute" &
var "my_mute" ?
var_greater "my_mvol_min" 23 ? set "my_mvol_min" 23 :
set "my_mvol_max" '`deck 1 level' &
get_var "my_mvol_min" &
param_cast "percentage" &
deck 1 level &
djc_mic on :
var_smaller "my_mvol_max" 53 ? set "my_mvol_max" 53 :
set "my_mvol_min" '`deck 1 level' &
get_var "my_mvol_max" &
param_cast "percentage" &
deck 1 level &
djc_mic off
Damit sollte erst der zustand der Variable geprüft werden, wenn er kleiner als der von dir eingestellte Wert ist wird sie neu gesetzt. Wenn nicht, dann wird mit der aktuellen Einstellung weiter gearbeitet. So zumindest die Idee dahinter.
Mensajes Fri 27 Jul 18 @ 9:18 am