Navigation:  Pro Script Editor > Kurze Einführung >

Sprachelemente

Vorherige Seite Zurück zum Kapitel Überblick Nächste Seite

siehe auch: Erweiterung der Scriptsprache

 

Sonderfunktionen Shredder

 

Sprachelemente

 

Zum Erstellen von Pro Scripten wird die Programmiersprache Pascal genutzt.

 

Unterstützte Pascal Syntax:

 

· 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:=[ 123 ];)

· ^ , * , / , and , + , - , or , <> , >=, <= , = , > , < , div , mod , xor , shl , shr  operators

· access to object properties and methods ( ObjectName.SubObject.Property )

 

 

Die Struktur eines Pro Scriptes

 

SCRIPT 1:

procedure DoSomething;

begin

   CallSomething;

end;

begin

   CallSomethingElse;

end;

SCRIPT 2:

begin

   CallSomethingElse;

end;

SCRIPT 3:

function MyFunction;

begin

   result:='Ok!';

end;

 

Wie in Pascal müssen statements mit ";" abgeschlossen werden. Begin..end Blöcke zum Gruppieren von Elementen sind erlaubt.

 

Identifizierer

 

Namen von Variablen, Funktionen und Prozeduren müssen mit einem Buchstaben (a..z or A..Z) oder '_' beginnen und können dann alphanumerische Zeichen oder  '_' enthalten. Leerzeichen oder andere Zeichen sind nicht erlaubt.

 

Gültige Identifizierer:

 

VarName

_Some

V1A2

_____Some____

Ungültige Identifizierer:

 

2Var

My Name

Some-more

This,is,not,valid

 

 

Zuweisungsstatements

 

Zuweisungen erfolgen mittels ":="

 

MyVar := 2;

Button.Caption := 'This ' + 'is ok';

 

 

Zeichenfolgen

 

Zeichenfolgen werden in einfache Anführungszeichen eingeschlossen

 

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

 

 

Sie können die Zeichen // oder (*   *) oder {  } Blöcke nutzen um Kommentare in den Code einzufügen.

Falls Sie // Zeichen nutzen, endet der Kommentar in der gleichen Zeile.

Wenn Sie die // Zeichen hinter einer Pascal Anweisung nutzen, lassen Sie bitte hinter ";" ein LEERZEICHEN!!!!

 

 

//This is a comment before ShowMessage

ShowMessage('Ok');

ShowMessage('Yupp'); //Another comment

(* This is another comment *)

ShowMessage('More ok!');

{ And this is a comment

 with two lines }

ShowMessage('End of okays');

 

 

Variablen

 

Auch wenn dies nicht zwingend nötig ist, sollten Sie Variablentypen im Script auch deklarieren.

script. Examples:

 

SCRIPT 1:

procedure Msg;

var S:string;

begin

   S:='Hello world!';

   ShowMessage(S);

end;

 

SCRIPT 2:

var A:integer;

begin

   A:=0;

   A:=A+1;

end;

 

Indizes

 

Strings, Arrays und Array Eigenschaften können mittels "[" und "]" indiziert werden. Falls str eine Variable vom Typ string ist,

gibt der Ausdruck Str[3] das dritte Zeichen des Strings zurück.

 

 

MyChar:=MyStr[2];

MyStr[1]:='A';

MyArray[1,2]:=1530;

Lines.Strings[2]:='Some text';

 

 

Arrays

 

Pro Scripte Scripte unterstützen Array Konstruktoren und Variant Arrays. Um ein Array zu erzeugen benutzt man  die Zeichen "[" und "]".

Sie können Mehrdimensionale Array erzeugen, indem Sie Array Konstruktoren verschachteln.

Arrays sind 0-basierte Indexe.

 

 

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

 

 

If Statement

 

Unterstützt werden die Formen if..then und if..then ... else .

 

if J <> 0 then Result := I/J;

 

if J = 0 then 

   Exit 

else 

   Result := I/J;

 

if J <> 0 then

begin

   Result := I/J;

   Count := Count + 1;

end

else

   Done := True;

 

 

While Statement

 

while Data[I] <> X do I := I + 1;

 

while I > 0 do

begin

   if Odd(I) then Z := Z * X;

   I := I div 2;

   X := Sqr(X);

end;

 

while not Eof(InputFile) do

begin

   Readln(InputFile, Line);

   Process(Line);

end;

 

Repeat Statement

 

repeat

   K := I mod J;

   I := J;

   J := K;

until J = 0;

 

repeat

   Write('Enter a value (0..9): ');

   Readln(I);

until (I >= 0and (I <= 9);

 

 

For Statement

 

SCRIPT 1:

for c:=1 to 10 do

   a:=a+c;

SCRIPT 2:

for i:=a to b do

begin

   j:=i^2;

   sum:=sum+j;

end;

 

 

Case Statement

 

case uppercase(Fruit) of

   'lime': ShowMessage('green');

   'orange': ShowMessage('orange');

   'apple': ShowMessage('red');

else

   ShowMessage('black');

end;

 

Deklaration von Funktionen und Prozeduren

 

procedure HelloWord;

begin

   ShowMessage('Hello world!');

end;

procedure UpcaseMessage(Msg:string);

begin

   ShowMessage(Uppercase(Msg));

end;

 

function TodayAsString:string;

begin

   result:=DateToStr(Date);

end;

 

function Max(A,B:integer):integer;

begin

   if A>B then

      result:=A

   else

      result:=B;

end;

 

procedure SwapValues(var A, B:integer);

Var Temp:integer;

begin

   Temp:=A;

   A:=B;

   B:=Temp;

end;

 

 

Import von DLL Funktionen

 

function functionName(arguments): resultType; [callingConvention]; external 'libName.dll' [name ExternalFunctionName];

 

Beispiel:

Die Funktionsdeklaration

 

function MyFunction(arg: integer): integer; external 'CustomLib.dll';

 

importiert eine Funktion namens MyFunction aus der DLL CustomLib.dll mit der Standardaufrufkonvention (register).

Sie können als Aufrufkonvention (stdcall, register, pascal, cdecl oder safecall) nutzen.

 

Beispiel:

 

function MessageBox(hwnd: pointer; text, caption: string; msgtype: integer):integer; stdcall; external 'User32.dll' name 'MessageBoxA';

 

importiert 'MessageBoxA' aus User32.dll (Windows API), genannt 'MessageBox'

 

 

Unterstützte Datentypen

 

Integer

Boolean

Char

Extended

String

Pointer

PChar

Object

Class

WideChar

PWideChar

AnsiString

Currency

Variant

Interface

WideString

Int64

Longint

Cardinal

Longword

Single

Byte

Shortint

Word

Smallint

Double

Real

DateTime

 

Andere Typen wie (records, arrays, etc.) werden nicht unterstützt!

 

 

 

 

 

 

 

 

 


Seitenadresse: http://www.ArchiCrypt.com/shredder5/index.html?sprachelemente.htm