Scripting Syntax
- Former user (Deleted)
- Dennis Balzuweit
Grundelemente
Hier eine Auflistung der wichtigsten Grundelemente der CLARC ENTERPRISE Scriptsprache (Delphi-Script):
- begin .. end constructor
- procedure and function declarations
- if .. then .. else constructor
- for .. to .. do .. step constructor
- while .. do constructor
- repeat .. until constructor
- try .. except and try .. finally blocks
- case statements
- array constructors (x:=[ 1, 2, 3 ];)
- ^ , * , / , and , + , - , or , <> , >=, <= , = , > , < , div , mod , xor , shl , shr operators
- access to object properties and methods ( ObjectName.SubObject.Property )
Script Strukturen
Die Script Struktur besteht allgemein aus zwei großen Blöcken welche jedoch optional sind. Wie in Pascal sollten Statements mit einem “;“ abgeschlossen werden. „Begin … end“ Blöcke sind zugelassen um Statements zu gruppieren.
Ein Script kann auch ganz ohne Begin … End Block oder Prozeduren und Funktionen programmiert werden.
- procedure and function declarations
- main block
Beispiel:
procedure DoSomething; begin CallSomething; end; begin CallSomethingElse; end;
Script Identifier
Identifier Namen im Script (Namen von Variablen, Funktionen und Prozeduren etc.) folgen den folgenden Regeln:
- Sie sollten mit einem der folgenden Zeichen beginnen (a..z or A..Z), oder '_'
- Weitere Zeichen können alphanumerisch sein
Assign statements
Assign statements (Zuordnung eines Werts oder Ausdrucks zu einer Variable oder Objekt Eigenschaft) werden mittels eines „:=“ erstellt.
Beispiel:
MyVar := 2; MyVar := 'This ' + 'is ok.';
Stringverarbeitung
Strings (Zeichensequenzen) werden in Pascal mittels des Zeichens (’) deklariert. (“) werden nicht verwendet.
Zusätzlich können mittels des Zeichens # innerhalb eines Strings einzelne Zeichen deklariert werden.
Einzelne Zeichenketten können mittels eines „+“ Zeichens miteinander verknüpft werden.
Beispiel:
A := 'This is a text'; Str := 'Text '+'concat'; B := 'String with CR and LF char at the end'#13#10; C := 'String with '#33#34' characters in the middle';
Kommentare
Kommentare werden innerhalb von Scripts verwendet.
Zum Beispiel // zum Kommentieren einer Zeile oder { } um ganze Blöcke als Kommentar zu markieren.
// Example Comment // ... { Block-Comment ... }
Hinweis
Bitte beachten Sie, dass eine Blockmarkierung immer mit dem ersten Auftreten eines "}" Zeichens beendet wird. Dabei kann das "}" Zeichen sich auch innerhalb eines Strings befinden.
Variablen
Variablen müssen nicht explizit deklariert werden. Dies bedeutet das Variablen mit der ersten Verwendung automatisch deklariert werden. Machen Sie dies am besten mit einer direkten Initialwertzuweisung.
Beispiel:
myVar := 0; ShowMessage( myVar );
Indexzugriffe
Strings, Arrays und Array Eigenschaften können mittels "[" and "]" indexiert werden. Zum Beispiel, wenn Str eine String Variable ist, Str[3] gibt das dritte Zeichen des Strings zurück.
Beispiel:
MyChar := MyStr[2]; MyStr[1] := 'A'; MyArray[1,2] := 1530; Lines.Strings[2] := 'Sometext';
Arrays
Verwendung von ein Ein- und Mehrdimensionalen-Arrays.
NewArray := [2,4,6,8 ]; Num := NewArray[1]; //Num receives "4" MultiArray := [ ['green','red','blue'] , ['apple','orange','lemon'] ]; Str := MultiArray[0,2]; //Str receives 'blue' MultiArray[1,1] := 'new orange';
procedure ArrayExample(MyArray); begin showmessage(MyArray[3]); // Shows "D" end; begin ArrayExample(['A','B','C','D']); end;
If Statements
Es gibt zwei Formen der If Abfrage: if...then und the if...then...else. Falls die Abfrage true ist, wird der entsprechende block (begin … end) ausgeführt.
Beispiel:
if J <> 0 then Result := I/J; if J = 0 then Exit else Result := I/J; if J <> 0 then begin Result := I/J; end else Done := True;
Hier noch ein Beispiel mit verschachtelten Logikoperatoren:
if ((i = 10) or (Name = 'clarc')) and (length(Name) > 0) then begin // ... end;
Boolsche Prüfungen:
i := 0; if ((i = 0) = true) then begin ShowMessage((i = 0)); // Shows "True" end;
While Statements
Verwendung von While Schleifen.
i := 0; while i < 10 do begin DoSomething; inc(i); end;
Repeat Statements
Verwendung von Repeat Schleifen.
i := 0; repeat i := i + 1; DoSomething; until i = 10;
For Statements
Verwendung von For Schleifen.
for c:=1 to 10 do begin a := a + c; ShowMessage( a ); end;
Break Funktion
Abbruch von Schleifen über die break Funktion.
for c:=1 to 10 do begin a := a + c; ShowMessage( a ); if c = 5 then break; end;
Case Statements
Verwendung von Case Statements.
case lowercase(Fruit) of 'lime' : ShowMessage('green'); 'orange' : ShowMessage('orange'); 'apple','cherry' : ShowMessage('red'); else ShowMessage('black'); end;
Funktionen und Prozeduren
Aufbau und Verwendung von Prozeduren.
procedure HelloWord; begin ShowMessage('Hello world!'); end; procedure UpcaseMessage(Msg); begin ShowMessage(Uppercase(Msg)); end; function TodayAsString; begin Result := DateToStr(Date); end; function Max(A,B); begin if A>B then Result := A else Result := B; end; procedure SwapValues(var A, B); Var Temp; begin Temp:=A; A:=B; B:=Temp; end;
Laufzeitfehler behandeln
Wie können Laufzeitfehler abgefangen und behandelt werden.
Try Try DoSomethingWithError; Except // Behandlung der Exception End; Finally // Abschliessende Verarbeitungen wird immer ausgeführt // auch bei einer Exception End;
Exceptions auswerten:
try Raise('Example Exception'); except // Hier wird der Text der letzten Exception ausgegeben ShowMessage(LastExceptionMessage); // ...und kann entsprechend behandelt werden if pos('Example', LastExceptionMessage) > 0 then begin // Do Something... end; end;