Anweisungen & Operatoren

DelphiScript-Anweisungen

Eine Anweisung in DelphiScript gilt als „einfach“, wenn sie keine anderen Anweisungen enthält. Beispiele für einfache Anweisungen sind Zuweisungsanweisungen und Prozeduraufrufe.

Simple statements:

X := Y + 10; // assignment

ShowMessage('Hello World!'); // procedure call

Eine zusammengesetzte Anweisung besteht aus mehreren Anweisungen.

Compound statements:

Begin
  If A > B Then ShowMessage('A is bigger');
  Else ShowMessage('B is bigger');
  A := 0;
  B := 0;
End;

In DelphiScript wird beim Zuweisen von Werten an Variablen der Zuweisungsoperator Doppelpunkt-Gleich verwendet: :=

Beim Prüfen auf Gleichheit wird der Gleichheitsoperator verwendet: =

Bedingte Anweisungen

DelphiScript verfügt über Steueranweisungen, die den Ablauf der Ausführung innerhalb eines Skripts beeinflussen. Die gebräuchlichste Steueranweisung ist die bedingte If..Then-Anweisung.

If-Then-Anweisung

Die If..Then-Anweisung wird zur bedingten Steuerung verwendet. Die Syntax lautet:

If Condition Then
  Begin
  // code here
  End
Else
  Begin
  // code here
  End;

Case-Of-Anweisung

Um eine komplexe Folge von If-Anweisungen zu vermeiden, können diese häufig durch Case-Anweisungen ersetzt werden. Eine Case-Anweisung in einem Ausdruck wird verwendet, um einen Wert, eine Liste möglicher Werte oder einen Wertebereich auszuwählen.

In einer Case-Anweisung können beliebige Typen verwendet werden, da DelphiScript eine untypisierte Sprache ist. Case-Anweisungen können eine Else-Anweisung enthalten, die ausgeführt wird, wenn keines der Labels dem Wert des Selektors entspricht (innerhalb der Case-Of-Bedingung).

Example 1:

Case Char of
  '+' : Text := 'Plus sign';
  '-' : Text := 'Minus sign';
  '*', '/': Text := 'Multiplication or division';
  '0'..'9': Text := 'Number';
  'a'..'z': Text := 'Lowercase character';
  'A'..'Z': Text := 'Uppercase character';
else
  Text := 'Unknown character';
End;

Example 2:

Case UserName of
  'Jack', 'Joe' : IsAdministrator := true;
  'Fred' : IsAdministrator := false;
else
  Raise('Unknown User');
End;

With-Anweisung

Die With-Anweisung ist eine Kurzschreibweise in DelphiScript. Wenn auf eine Variable eines Record-Typs (oder ein Objekt) verwiesen wird, kann eine „with“-Anweisung verwendet werden, anstatt den Namen jedes Mal zu wiederholen.

Normal version:

Form.Canvas.Pen.Width := 2;
Form.Canvas.Pen.Color := clSilver;

Version using With:

With Form.Canvas.Pen do
Begin
  Width := 2;
  Color := clSilver;
End;

For-To-Do-Schleife

Die For..To..Do-Anweisung bietet eine Methode, um wiederholt einen Codeblock (eine oder mehrere Codezeilen) zu durchlaufen. Die grundlegende Syntax lautet:

For counter := start To end Do
Begin
  // code here
End;

ForFor..To..Do-Schleifen werden häufig verwendet, um ein Array zu initialisieren. Die Zählrichtung in einer For..To..Do-Schleife kann alternativ durch Verwendung des Schlüsselworts DownTo zum Herunterzählen der Schleife gesteuert werden. DelphiScript stellt die Break/Exit-Anweisung bereit, um eine For..To..Do-Schleife vorzeitig zu verlassen.

Repeat-Until-Schleife

Die Repeat-Anweisung wird wiederholt ausgeführt, bis der boolesche Ausdruck wahr ist. Die Repeat-Anweisung wird immer mindestens einmal ausgeführt.

Example:

Repeat
  Write('Enter a value (0..9): ');
  ShowMessage(IntToStr(I));
Until (I >= 0) and (I <= 9);

While-Do-Schleife

Eine While-Anweisung ist einer Repeat-Anweisung ähnlich, mit dem Unterschied, dass die Steuerbedingung vor der ersten Ausführung der Anweisungsfolge ausgewertet wird. Wenn die Bedingung also falsch ist, wird die Anweisungsfolge niemals ausgeführt.

Example:

Randomize;
I := 0;
While I < 1000 do
Begin
  I := I + Random (100);
  Add ('Random Number: ' + IntToStr (I));
End;

Continue-Anweisung

Die Continue-Anweisung überspringt den Rumpf einer Schleife, ähnlich wie die Goto-Anweisung. Die Continue-Anweisung bewirkt, dass das ausgeführte Skript zur nächsten Iteration in der aktuellen For-, While- oder Repeat-Schleife übergeht.

Example:

var
  F: File;
  i: Integer;
Begin
  For i := 0 to (FileListBox1.Items.Count - 1) do
  Begin
    Try
    If FileListBox1.Selected[i] Then
    Begin
      If not FileExists(FileListBox1.Items.Strings[i]) then
      Begin
        MessageDlg('File: ' + FileListBox1.Items.Strings[i] + 'not found', mtError, [mbOk], 0);
        Continue;
      End;
      AssignFile(F, FileListBox1.Items.Strings[i]);
      Reset(F, 1);
      ListBox1.Items.Add(IntToStr(FileSize(F)));
      CloseFile(F);
    End;
    Finally
      { do something here }
    End;
  End;
End;

Goto-Label-Anweisung

Die Goto-Anweisung hat die Form Goto label und überträgt die Skriptausführung an die mit dem angegebenen Label markierte Anweisung. Um eine Anweisung zu markieren, muss das Label zuerst deklariert werden; anschließend wird der Zielanweisung das Label und ein Doppelpunkt vorangestellt: label: statement

Ein Label kann jeder gültige Bezeichner sein. Die Label-Deklaration und die Goto-Anweisung müssen zum selben Codeblock innerhalb eines Skripts gehören. Daher ist es nicht möglich, in eine Prozedur oder Funktion hinein- oder aus ihr herauszuspringen.

Example:

Label StartHere;
  // code
StartHere: Beep;
Goto StartHere;

Exit-Anweisung

Die Exit-Anweisung kehrt sofort aus einer Funktion oder Prozedur zurück. Wenn Sie Exit innerhalb eines Try..Finally-Blocks aufrufen, wird der Finally-Teil ausgeführt, bevor die Unterroutine zurückkehrt. Wenn die Prozedur Exit innerhalb des Hauptteils des Skripts aufgerufen wird, wird die Ausführung des Skripts beendet.

Example:

Begin
  Server := SchServer;
  If Server = Nil Then
  Begin
    ShowError('No SchServer started');
    Exit;
End;

Break-Anweisung

Die Break-Anweisung bewirkt, dass das ausgeführte Skript die aktuelle For-, While- oder Repeat-Schleife verlässt. Die Skriptausführung wird mit der nächsten ausführbaren Zeile nach der aktuellen Schleife fortgesetzt.

Example:

Var
  S: string;
Begin
  While True do
  Begin
    ReadLn(S);
    Try
      if S = '' then Break;
      WriteLn(S);
    Finally
      { do something for all cases }
    End;
  End;
End;

DelphiScript-Ausdrucksoperatoren

Im Allgemeinen ist ein Ausdruck eine gültige Kombination aus Konstanten, Variablen, Literalwerten, Operatoren und Funktionsergebnissen. Ausdrücke werden verwendet, um den Wert zu bestimmen, der einer Variablen zugewiesen werden soll, um den Parameter einer Funktion zu berechnen oder um eine Bedingung zu prüfen. Ausdrücke können Funktionsaufrufe enthalten.

DelphiScript verfügt über eine Reihe logischer, arithmetischer, boolescher und relationaler Operatoren. Diese Operatoren sind nach ihrer Prioritätsreihenfolge gruppiert (siehe unten), die sich von den in Basic, C usw. verwendeten Prioritätsreihenfolgen unterscheidet. Beispielsweise haben die Operatoren AND und OR Vorrang vor relationalen Operatoren.

Wenn Sie a<b and c<d schreiben, führt DelphiScript zuerst die Operation AND aus, was zu einem Fehler führt. Um dieses Problem zu vermeiden und die Priorität festzulegen, muss jeder <-Ausdruck in Klammern gesetzt werden: (a<b) and (c<d);

Die unten aufgeführten unterstützten DelphiScript-Operatoren sind in ihrer Prioritätsreihenfolge dargestellt.

Nach Priorität gruppierte Operatoren

Beachten Sie, dass unäre Operatoren die höchste Priorität haben.

Not

Boolesches oder bitweises NOT.

Multiplicative and Bitwise Operators

*

Arithmetische Multiplikation.

/

Gleitkommadivision.

div

Ganzzahldivision.

mod

Modulo (Rest der Ganzzahldivision).

and

Boolesches oder bitweises AND.

shl

Bitweise Linksverschiebung.

shr

Bitweise Rechtsverschiebung.

Additive Operators

+

Arithmetische Addition, Zeichenkettenverkettung.

-

Arithmetische Subtraktion.

or

Boolesches oder bitweises OR

xor

Boolesches oder bitweises EXKLUSIVES ODER.

Relational and Comparison Operators (lowest precedence)

=

Prüft, ob gleich oder nicht.

<>

Prüft, ob ungleich oder nicht.

<

Prüft, ob kleiner als oder nicht.

>

Prüft, ob größer als oder nicht.

<=

Prüft, ob kleiner oder gleich oder nicht.

>=

Prüft, ob größer oder gleich oder nicht.

Beachten Sie außerdem, dass die Operatoren ^ und @ von DelphiScript nicht unterstützt werden.

AI-LocalizedAI-localized
Wenn Sie ein Problem feststellen, wählen Sie den Text/das Bild aus und drücken SieStrg + Eingabe, um uns Ihr Feedback zu senden.
Funktionsverfügbarkeit

Die Ihnen zur Verfügung stehenden Funktionen hängen davon ab, welche Altium-Lösung Sie verwenden – Altium Develop, eine Edition von Altium Agile (Agile Teams oder Agile Enterprise), oder Altium Designer (mit aktivem Abonnement).

Wenn Sie eine besprochene Funktion in Ihrer Software nicht sehen, kontaktieren Sie den Altium-Vertrieb , um mehr zu erfahren.

Legacy-Dokumentation

Die Dokumentation von Altium Designer wird nicht mehr versioniert. Wenn Sie auf Dokumentation für ältere Versionen von Altium Designer zugreifen müssen, besuchen Sie den Abschnitt Legacy-Dokumentation auf der Seite Andere Installer.

Inhalt