OBS/Makros und Scripting/Allgemeines/Syntax
Die Makros im OBS orientieren sich an der Syntax der Sprache Pascal.
Variablen-Typen
string
Variablen des Typs string enthalten Zeichenketten (Text) wie z. B. 'Max Mustermann' oder 'Musterweg 1a'.
char
Varablen des Typs char enthalten ein einzelnes Zeichen (Text) wie z.B. 'A', 'z' oder '1'.
Methode('1'); Methode(#0);
integer
Variablen des Typs integer enthalten Ganzzahlen wie 2, 15 oder 1538.
double
Variablen des Typs double enthalten Dezimalzahlen. Hier ist zu beachten, dass das Trennzeichen bei der Angabe von Dezimalstellen immer ein Punkt ist.
Beispiel:
Preis := 10.95;
boolean
Variablen dieses Typs enthalten Wahrheitswerte. Sie können entweder wahr oder falsch sein. Der Wert lässt sich direkt mit true oder false setzen. Es können aber Bedingungen für die Zuweisung verwendet werden. Boolsche Variablen lassen sich in bedingten Anweisungen des Typs if auch ohne Vergleichswert nutzen.
Beispiel:
Vorbelegung:
lVerglichen = false;
lA_ist_kleiner_B = false;
Abfrage:
if (not lVerglichen) then begin
lA_ist_kleiner_B := A < B;
lVerglichen := true;
end;
Dies führt dazu, dass diese boolsche Variablen nicht mit einem "not" negiert werden können.
if (not lVariable) then begin //Falsch
if (lVariable = False) then begin //Richtig
Konstanten
Konstanten enthalten wie Variablen bestimmte Werte. Anders als bei Variablen werden Konstanten nicht einfach mit einem Datentyp sondern schon mit dem Wert definiert, der im ganzen Programm(-teil) verfügbar sein soll. Kostanten können nicht verändert werden.
In Makros lassen sich eigene Konstanten definieren. Das kann wie folgt aussehen:
const
GRUSS = 'Mit freundlichen Grüßen';
HOMEPAGE_HINWEIS = 'Besuchen Sie uns doch mal auf unserer Homepage unter www.unsere-seite.de und erfahren '+
'Sie mehr über die ergonomische Einrichtung von Arbeitsplätzen. Für aktuelle Informationen '+
'oder Aktionen könne Sie sich auf unserer Homepage für den Newsletter eintragen.';
Eine Übersicht der Konstanten die vom OBS für Makros mitgeliefert werden finden Sie hier.
Methoden
Es gibt zwei Typen: Prozedur und Funktion. Der Unterschied dabei ist, dass Funktionen einen Rückgabewert haben. Die Definition einer Methode erfolgt in der Reihenfolge Typ-Anweisung, Methodenname, Parameter und bei Funktionen der Typ des Rückgabewerts. Mehrere Parameter sind mit Semikolon zu trennen.
Beispiel Prozedur:
procedure Name(cParameter1: string; nParameter2: integer);
Beispiel Funktion:
function Name(cParameter1: string; nParameter2: integer): boolean;
Bedingte Anweisungen
Bedingte Anweisungen machen es möglich einen Teil des Makros nur ausführen zu lassen, wenn etwas bestimmtes zutrifft. In Pascal gibt es dafür if und case. Die case-Anweisung unterliegt dabei allerdings im Vergleich zur if-Anweisung einiger Einschränkungen.
if
if (Bedingung) then begin
Befehl1;
Befehl2;
//...
end;
Es ist auch möglich mehrere Bedingungen zu definieren. Dabei lässt sich bestimmen, ob nur eine, alle oder ein Teil der Bedingung zutreffen muss, um den Teil des Makros auszuführen. Das kann hilfreich sein, wenn in mehreren Fällen das gleiche passieren soll.
Alle Bedingungen sollen zutreffen:
if (Bedingung1 and Bedingung2) then begin
//code
end;
Nur eine Bedingung muss zutreffen:
if (Bedingung1 or Bedingung2) then begin
//code
end;
Nur Bedingung 1 oder Bedingung 2 und 3 (hier sind die Klammern wichtig!):
if (Bedingung1 or (Bedingung2 and Bedingung 3)) then begin
//code
end;
case
Die case-Anweisung prüft den Wert einer Variablen ab und und führt dann den - sofern vorhanden - dazu passenden Fall aus. Dies funktioniert jedoch nur mit einem ordinalen Typ (z. B. Ganzzahl oder einzelnes Zeichen).
Struktur:
case Wert of
Fall1 : Anweisung;
Fall2 : Anweisung;
Fall3 : begin
Anweisung 1;
Anweisung 2;
end;
else
Standard-Anweisung
end;
Es können als Bedingung (Fall) auch mehrere Angaben mit Komma getrennt erfolgen oder Bereiche mit zwei Punkten angegeben werden.
Beispiel:
case nMonat of
1,3,5,7..8,10,12 : nTage := 31;
2 : begin
if IstSchaltjahr then begin
nTage := 29;
end else begin
nTage := 28;
end;
end;
else
nTage := 30;
end;
Schleifen
Schleifen ermöglichen die mehrfache Ausführung eines Teils des Makros. Es wird unterschieden in kopfgesteuerten und fußgesteuerten Schleifen. In den Makros können Sie zwei kopfgesteuerte (while und for) und eine fußgesteuerte Schleife (repeat until) verwenden. Der Unterschied besteht darin, dass bei kopfgesteuerten Schleifen der eingefasste Teil nur ausgeführt wird, wenn die Bedingung der Schleife dies zulässt. Bei der fußgesteuerten Schleife wird der eingefasste Teil mindestens einmal ausgeführt. Die weitere Ausführung entscheidet dann die Bedingung am "Fuß" der Schleife.
while
Bei dieser kopfgesteuerten Schleife wird der eingefasste Code solange ausgeführt, bis die Bedingung nicht mehr erfüllt ist. Die Anzahl der Durchläufe kann abhängig von der Bedingung variieren. Es ist möglich Variablen der Bedingung innerhalb der Schleife zu verändern. Es ist möglich eine unendliche Ausführung dieser Schleife zu erzeugen.
for
Schleifen vom Typ for arbeiten mit einem festen Zähler. Es kann dabei hoch sowie runter gezählt werden. Sobald der Startwert und der Endwert bestimmt sind, wird die Schleife entsprechend oft ausgefüht. Auf den Zähler kann dabei innerhalb der Schleife kein Einfluss genommen werden.
repeat until
Die eingefasste Code dieser fußgesteuerten Schleife wird wiederholt, bis die Abbruch-Bedingung erfüllt wird.