Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

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
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:

Codeblock
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:

Codeblock
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.

Codeblock
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:

Codeblock
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:

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

Arrays

Verwendung von ein Ein- und Mehrdimensionalen-Arrays.

Codeblock
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';
Codeblock
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: 

Codeblock
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:

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

Boolsche Prüfungen:

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

While Statements

Verwendung von While Schleifen.

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

Repeat Statements

Verwendung von Repeat Schleifen.

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

For Statements

Verwendung von For Schleifen.

Codeblock
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.

Codeblock
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.

Codeblock
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.

Codeblock
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.

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

Exceptions auswerten:

Codeblock
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; 

Inhalt

Untergeordnete Seiten (Anzeige untergeordneter Seiten)
alltrue
depth2