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:
Codeblock |
---|
language | delphi |
---|
linenumbers | true |
---|
|
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:
Codeblock |
---|
language | delphi |
---|
linenumbers | true |
---|
|
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:
Codeblock |
---|
language | delphi |
---|
linenumbers | true |
---|
|
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.
Codeblock |
---|
language | delphi |
---|
linenumbers | true |
---|
|
// Example Comment
// ...
{
Block-Comment
...
} |
Info |
---|
|
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:
Codeblock |
---|
language | delphi |
---|
linenumbers | true |
---|
|
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:
Codeblock |
---|
language | delphi |
---|
linenumbers | true |
---|
|
MyChar := MyStr[2];
MyStr[1] := 'A';
MyArray[1,2] := 1530;
Lines.Strings[2] := 'Sometext'; |
Arrays
Verwendung von ein Ein- und Mehrdimensionalen-Arrays.
Codeblock |
---|
language | delphi |
---|
linenumbers | true |
---|
|
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'; |
Codeblock |
---|
language | delphi |
---|
linenumbers | true |
---|
|
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:
Codeblock |
---|
language | delphi |
---|
linenumbers | true |
---|
|
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:
Codeblock |
---|
language | delphi |
---|
linenumbers | true |
---|
|
if ((i = 10) or (Name = 'clarc')) and (length(Name) > 0) then
begin
// ...
end; |
Boolsche Prüfungen:
Codeblock |
---|
language | delphi |
---|
linenumbers | true |
---|
|
i := 0;
if ((i = 0) = true) then
begin
ShowMessage((i = 0)); // Shows "True"
end; |
While Statements
Verwendung von While Schleifen.
Codeblock |
---|
language | delphi |
---|
linenumbers | true |
---|
|
i := 0;
while i < 10 do
begin
DoSomething;
inc(i);
end; |
Repeat Statements
Verwendung von Repeat Schleifen.
Codeblock |
---|
language | delphi |
---|
linenumbers | true |
---|
|
i := 0;
repeat
i := i + 1;
DoSomething;
until i = 10; |
For Statements
Verwendung von For Schleifen.
Codeblock |
---|
language | delphi |
---|
linenumbers | true |
---|
|
for c:=1 to 10 do
begin
a := a + c;
ShowMessage( a );
end; |
Break Funktion
Abbruch von For Schleifen über die break Funktion.
Codeblock |
---|
language | delphi |
---|
linenumbers | true |
---|
|
for c:=1 to 10 do
begin
a := a + c;
ShowMessage( a );
if c = 5 then break;
end; |
Case Statements
Verwendung von Case Statements.
Codeblock |
---|
language | delphi |
---|
linenumbers | true |
---|
|
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.
Codeblock |
---|
language | delphi |
---|
linenumbers | true |
---|
|
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.
Codeblock |
---|
language | delphi |
---|
linenumbers | true |
---|
|
Try
Try
DoSomethingWithError;
Except
// Behandlung der Exception
End;
Finally
// Abschliessende Verarbeitungen wird immer ausgeführt
// auch bei einer Exception
End; |
Exceptions auswerten:
Codeblock |
---|
language | delphi |
---|
linenumbers | true |
---|
|
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; |