Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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:

Code Block
languagedelphi
linenumberstrue
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:

Code Block
languagedelphi
linenumberstrue
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:

Code Block
languagedelphi
linenumberstrue
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.

Code Block
languagedelphi
linenumberstrue
// Example Comment
// ...


{
  Block-Comment
  ...
}
Info
titleHinweis

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:

Code Block
languagedelphi
linenumberstrue
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:

Code Block
languagedelphi
linenumberstrue
MyChar           := MyStr[2];
MyStr[1]         := 'A';
MyArray[1,2]     := 1530;
Lines.Strings[2] := 'Sometext';

Arrays

Verwendung von ein Ein- und Mehrdimensionalen-Arrays.

Code Block
languagedelphi
linenumberstrue
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';
Code Block
languagedelphi
linenumberstrue
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: 

Code Block
languagedelphi
linenumberstrue
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:

Code Block
languagedelphi
linenumberstrue
if ((i = 10) or (Name = 'clarc')) and (length(Name) > 0) then 
begin
  // ...
end;

Boolsche Prüfungen:

Code Block
languagedelphi
linenumberstrue
i := 0;
if ((i = 0) = true) then
begin
  ShowMessage((i = 0)); // Shows "True"
end;

While Statements

Verwendung von While Schleifen.

Code Block
languagedelphi
linenumberstrue
i := 0;
while i < 10 do
begin
  DoSomething;
  inc(i); 
end;

Repeat Statements

Verwendung von Repeat Schleifen.

Code Block
languagedelphi
linenumberstrue
i := 0;
repeat
  i := i + 1;
  DoSomething;
until i = 10; 

For Statements

Verwendung von For Schleifen.

Code Block
languagedelphi
linenumberstrue
for c:=1 to 10 do
begin
  a := a + c;
  ShowMessage( a );
end; 

Break Funktion

Abbruch von For Schleifen über die break Funktion.

Code Block
languagedelphi
linenumberstrue
for c:=1 to 10 do
begin
  a := a + c;
  ShowMessage( a );
  if c = 5 then break;
end; 

Case Statements

Verwendung von Case Statements.

Code Block
languagedelphi
linenumberstrue
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.

Code Block
languagedelphi
linenumberstrue
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.

Code Block
languagedelphi
linenumberstrue
Try
  Try
    DoSomethingWithError;
  Except
    // Behandlung der Exception
  End;
Finally
  // Abschliessende Verarbeitungen wird immer ausgeführt
  // auch bei einer Exception
End;

Exceptions auswerten:

Code Block
languagedelphi
linenumberstrue
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; 

Table of Contents

Children Display
alltrue
depth2