Programmcode Befehle Syntax Beispiele: Unterschied zwischen den Versionen
Dg3nec (Diskussion | Beiträge) (→COPY() - Substring aus String) |
Dg3nec (Diskussion | Beiträge) |
||
Zeile 78: | Zeile 78: | ||
end; | end; | ||
− | == | + | ==Delphi/Pascal== |
===COPY() - Substring aus String=== | ===COPY() - Substring aus String=== |
Version vom 30. Mai 2022, 14:07 Uhr
Programmcode Befehle Syntax Beispiele
Inhaltsverzeichnis
Vorwort:
Seit 05/2022 gibt es Code-Szenen in der Szenenverwaltung. Vorher konnte Code nur bei einem Button im Kontrolpanel hinterlegt werden. Dieses Tutorial ist deshalb vermutlich für beides gültig.
Hier werden die Befehle beschrieben die in einer Code-Szene verwendet werden können. Es wird auch auf Delphi Befehle eingegangen. Möglichst immer mit einem Beispiel. Ich erweitere dieses Tutorial Befehl für Befehl. Immer dann wenn ich den Befehl in der Praxis selbst probiert habe. Eine Kurzhilfe hat Christian jeweils im "Edit-Modus" hinterlegt.
Grundlegendes
CodeSzene - Prinzipieller Aufbau
Sobald eine neue CodeSzene in der Szenenverwaltung hinzugefügt wird beinhaltet sie bereits diesen grundlegenden Programmcode. Eueren Programmcode schreibt ihr in die "procedure StartScene;" zwischen "begin" und "end;". Als Beispiel ist ein Befehl (rot markiert) dort zu finden.
Vieleicht schreibt Christian was zu "procedure InitScene;" und "procedure StopScene;". Ich müsste raten.
interface
procedure InitScene;
procedure StartScene;
procedure StopScene;
implementation
procedure InitScene;
begin
end;
procedure StartScene;
begin
ShowMessage('Hello World');
end;
procedure StopScene;
begin
end;
end.
Zeile mit ; abschließen
Jede Programmcode Zeile muss mit ; (Strichpunkt) enden. Der Hintergrund ist, dass der Programmcode nicht Zeilenweise abgearbeitet wird. Der Strichpunkt löst die Befehlsabarbeitung aus.
Sollte man diesen vergessen, vermischt der Befehlsinterpreter euren Code. Es kommt zu den irrsinnigsten Fehlermeldungen.
Es gibt jedoch Ausnahmen. Befehle die wiederum Code enthalten. Zum Beispiel "if". Dieser Code wird meist in geschweifte Klammern gesetzt.
for (int i=0;i<10;i++)
if( values[i]>0&&values[ i+1 ]>0 )
{
out.println ("found!");
break;
}
Befehle
PCDimmer
get_lastmidi() - letzen MIDI Input abfragen
Der Befehl (Funktion) get_lastmidi() gibt einen String zurück mit drei Zeichen Länge. Die drei Zeichen sind MIDI_MSG, MIDI_Data1 und MIDI_Data2. Im Beispiel wird gezeigt wie man diese zerrlegt und in eine Zahl umwandelt.
procedure StartScene;
var
MIDI_last_MSG, MIDI_last_Data1, MIDI_last_Data2, MIDI_last_in:variant;
begin
MIDI_last_in := get_lastmidi());
MIDI_last_MSG := Ord(Copy(MIDI_last_in,1,1);
MIDI_last_Data1 := Ord(Copy(MIDI_last_in,2,1));
MIDI_last_Data2 := Ord(Copy(MIDI_last_in,3,1));
ShowMessage( IntToStr(MIDI_last_MSG) + '-' + IntToStr(MIDI_last_Data1) + '-' + IntToStr(MIDI_last_Data2));
end;
ShowMessage() - Nachrichtenbox anzeigen
Der Befehl ShowMessage() erzeugt eine Nachrichtenbox (kleines Fenster) mit einem Button "OK". Die Box wird mit klick auf "OK" geschlossen. Die Nachricht wird als String übergeben.
procedure StartScene; begin ShowMessage('Hello World'); end; procedure StopScene; begin end;
Delphi/Pascal
COPY() - Substring aus String
Der Befehl COPY(source, ab Position, Zeichenzahl) gibt einen String zurück der anhand der Parameter definiert ist. Im Beispiel wird der letzte MIDI Input (String, drei Zeichen lang) zerrlegt in einzelne Strings (Länge 1).
procedure StartScene; var MIDI_last_MSG, MIDI_last_Data1, MIDI_last_Data2, MIDI_last_in:variant; begin MIDI_last_in := get_lastmidi(); MIDI_last_MSG := Ord(Copy(MIDI_last_in,1,1)); MIDI_last_Data1 := Ord(Copy(MIDI_last_in,2,1)); MIDI_last_Data2 := Ord(Copy(MIDI_last_in,3,1)); ShowMessage( IntToStr(MIDI_last_MSG) + '-' + IntToStr(MIDI_last_Data1) + '-' + IntToStr(MIDI_last_Data2)); end;
ORD() - ASCII ermitteln
Der Befehl ORD(string) gibt ein Integer zurück der dem ASCII Code des Strings entspricht. Im Beispiel wird der letzte MIDI Input (String mit drei Zeichen) zerrlegt und das Zeichen nach ASCII umgewandelt - was dem MIDI-Wert entspricht.
procedure StartScene; var MIDI_last_MSG, MIDI_last_Data1, MIDI_last_Data2, MIDI_last_in:variant; begin MIDI_last_in := get_lastmidi(); MIDI_last_MSG := Ord(Copy(MIDI_last_in,1,1)); MIDI_last_Data1 := Ord(Copy(MIDI_last_in,2,1)); MIDI_last_Data2 := Ord(Copy(MIDI_last_in,3,1)); ShowMessage( IntToStr(MIDI_last_MSG) + '-' + IntToStr(MIDI_last_Data1) + '-' + IntToStr(MIDI_last_Data2)); end;