Funktionen

Die gebräuchlichen Funktionsanweisungen der DelphiScript-Sprache werden nachfolgend behandelt. Der Umfang der DelphiScript-Funktionen wird in Abschnitten zu FileIO-Routinen, mathematischen Routinen, String-Routinen und Erweiterungsroutinen dargestellt.

Berechnung von Ausdrücken mit der Evaluate-Funktion

Die integrierte Funktion Evaluate interpretiert zur Laufzeit eine Zeichenfolge, die einen gültigen mathematischen Ausdruck enthält, und gibt ein Ergebnis zurück. Sie können beispielsweise ein Skript wie Evaluate(ProcNames[ProcIndex]); schreiben, und die in ProcNames[ProcIndex] angegebene Prozedur wird aufgerufen.

Um einen solchen Ausdruck zu berechnen, können Sie die Evaluate-Methode verwenden, wobei der Ausdruck durch den Expr-Parameter angegeben wird. Sie können zum Beispiel Ausdrücke wie die folgenden berechnen:

Evaluate('2+5');
Evaluate('((10+15)-5)/2*5');
Evaluate('sin(3.1415926/2)*10');
Evaluate('2.5*log(3)');

Übergabe von Parametern an Funktionen und Prozeduren

Sowohl in einem Skript definierte Funktionen als auch Prozeduren können so deklariert werden, dass sie Parameter akzeptieren. Zusätzlich sind Funktionen so definiert, dass sie einen Wert zurückgeben. Parametertypen in Prozedur-/Funktionsdeklarationen werden ignoriert und können weggelassen werden. Zum Beispiel ist dieser Code korrekt:

Function sum(a, b) : integer;
Begin
  Result := a + b;
End;

Verlassen einer Prozedur

DelphiScript stellt die Anweisungen Exit und Break bereit, um das vorzeitige Verlassen einer Prozedur zu erzwingen, bevor sie auf natürliche Weise beendet würde. Wenn zum Beispiel der Wert eines Parameters nicht geeignet ist, möchten Sie den Benutzer möglicherweise warnen und die Prozedur verlassen, wie das folgende Beispiel zeigt.

Procedure DisplayName (s);
Begin
  If s = '' Then
  Begin
    ShowMessage('Please enter a name');
    Exit;
  End;
  ShowMessage(S + ' is shown');
End;

File-IO-Routinen

DelphiScript verfügt über die folgenden IO-Routinen:

Append

AssignFile

ChDir

CloseFIle

Eof

Eoln

Erase

GetDir

MkDir

Read

Readln

Reset

Rewrite

RmDir

Write

Writeln

 

 

DelphiScript ermöglicht es Ihnen, Informationen in eine Textdatei zu schreiben, und da DelphiScript eine typfreie Sprache ist, müssen alle Werte zunächst in Zeichenfolgen konvertiert werden.

Hier sind die Routinen Read und ReadLn äquivalent — sie lesen eine Zeile bis zur nächsten Zeile, diese jedoch nicht eingeschlossen. Eine Writeln(String)-Routine ist äquivalent zu einer Write(S)- und einer Write(LineFeed + CarriageReturn)-Routine.

Um eine Textdatei zu schreiben, verwenden Sie die Prozeduren AssignFile, ReWrite, Writeln und CloseFile. Um eine Textdatei zu lesen, verwenden Sie die Prozeduren AssignFile, Reset, Readln und CloseFile. Das folgende Beispiel schreibt in eine Textdatei und fügt eine Zeilenendemarkierung hinzu. Die Verwendung des Try / Finally / End-Blocks wird empfohlen, um Skripte im Falle eines IO-Fehlers sicher zu machen.

Example:

Var
  InputFile : TextFile;
  OutputFile : TextFile;
  I          : Integer;
  Line       : String;
Begin
  AssignFile(OutputFile,eConvertedFile.Text);
  Rewrite(OutputFile);
  AssignFile(InputFIle,eOriginalFIle.Text);
  Reset(InputFile);
 
  Try
  While not EOF(InputFile) do
  Begin
    Readln(InputFile,Line);
    For I := 1 to Length(Line) Do
      Line[I] := UpperCase(Line[I]);
      Writeln(Outputfile, Line);
    End;
  Finally
    CloseFile(InputFile);
    CloseFile(OutputFile);
  End;
End;

Mathematische Routinen

DelphiScript verfügt über die folgenden mathematischen Routinen:

Abs

ArcTan

Cos

Exp

Frac

Int

Random

Randomize

Round

Sin

Sqr

Sqrt

Trunc

 

 

String-Routinen

DelphiScript verfügt über die folgenden String-Routinen, mit denen Zeichenfolgen oder Zeichen bearbeitet werden können. In der folgenden Tabelle wird nur eine Teilmenge der String-Routinen gezeigt (die meisten von DelphiScript verwendeten String-Routinen werden aus Embarcadero Delphis SysUtils-Unit importiert):

AnsiCompareStr

AnsiCompareText

AnsiDequotedStr

AnsiExtractQuotedStr

AnsiLowerCase

AnsiPos

AnsiQuotedStr

AnsiSameStr

AnsiSameText

AnsiUpperCase

CompareStr

CompareText

Copy

Delete

FloatToStr

FloatToStrF

Format

Frac

Insert

Int

IsDelimiter

LastDelimiter

Length

LowerCase

Ord

Pos

Pred

QuotedStr

Round

SameText

SetLength

StringOfChar

StringToGUID

Succ

Trim

TrimLeft

TrimRight

UpCase

UpperCase

WideUpperCase

WideLowerCase

WideSameStr

WideSameText

 

 

Die von DelphiScript not unterstützten String-Routinen sind in der folgenden Tabelle aufgeführt:

AnsiContainsStr

AnsiContainsText

AnsiEndsStr

AnsiEndsText

AnsiIndexText

AnsiMatchStr

AnsiMatchText

AnsiReplaceStr

AnsiReplaceText

AnsiResemblesProc

AnsiResemblesText

AnsiStartsStr

AnsiStartsText

Concat

DecodeSoundExInt

DecodeSoundExWord

DupeString

LeftStr

MidStr

NullStr

ReverseString

RightStr

SetString

SoundEx

SoundExCompare

SoundExInt

SoundExProc

SoundExSimilar

SoundExWord

Str

StuffString

Val

 

Erweiterungsroutinen

Erweiterungsroutinen werden verwendet, wenn in Skripten mit Serverprozessen gearbeitet wird (ein Befehl ist ein paketierter Serverprozess mit Parametern, falls vorhanden), insbesondere wenn Sie Zeichenfolgen für die Parameter von Prozessen extrahieren oder festlegen müssen. Einige der Routinen sind unten aufgeführt.

Um Parameter von Prozessen in einem Skript auszuführen, können die folgenden Funktionen erforderlich sein:

AddColorParameter

AddIntegerParameter

AddLongIntParameter

AddSingleParameter

AddWordParameter

GetIntegerParameter

GetStringParameter

ResetParameters

RunProcess

Useful functions:

SetCursorBusy

ResetCursor

CheckActiveServer

GetActiveServerName

GetCurrentDocumentFileName

RunApplication

SaveCurrentDocument

 

 

Useful dialogs:

ConfirmNoYes

ConfirmNoYesCancel

ShowError

ShowInfo

ShowWarning

 

Verwendung von Mengen in DelphiScript

Die Schlüsselwörter Set und In von Embarcadero Delphi sowie die Mengenoperatoren +, -, *, <= und >= werden in DelphiScript nicht unterstützt. Die entsprechenden Schlüsselwörter für Mengenoperatoren sind unten tabellarisch aufgeführt.

DelphiScript hat keine Mengentypen. Um Mengen in DelphiScript-Skripten zu verwenden, nutzen Sie die integrierten Funktionen MkSet, MkSetRange, InSet, SetUnion, SetDifference, SetIntersection und SubSet, mit denen Mengen in einem DelphiScript-Skript bearbeitet werden können. Diese werden unten ausführlicher beschrieben.

Mengenoperatoren

Embarcadero Delphi Set Operator keyword

Equivalent DelphiScript Set Operator keyword

+

SetUnion

-

SetDifference

*

SetIntersection

<=

SubSet

=

=

<>

<>

In

InSet

MkSet-Funktion

Die Funktion MkSet ist ein Mengenkonstruktor mit einer variablen Anzahl von Argumenten. Zum Beispiel:

Font.Style = MkSet(fsBold,fsItalic);

Das MkSet(fsBold,fsItalic)  bezeichnet hier nur zwei Mengenelemente: fsBold und fsItalic.

MkSetRange-Funktion

Die Funktion MkSetRange ist ein Mengenkonstruktor mit einem Argumentbereich. Zum Beispiel:

LayerSet := MkSetRange(eTopLayer,eBottomLayer);

Die Funktion MkSetRange(eTopLayer,eBottomLayer) bezeichnet einen Bereich von Layern von eTopLayer bis eBottomLayer.

InSet-Funktion

Diese Funktion InSet wird als Ersatz für Delphis Operator In verwendet. A in B ist gleich InSet(A, B).

If InSet(A,B) then
  ShowMessage('A is in B set')
Else
  ShowMessage('A not in B set');

SetUnion-Funktion

Die Funktion SetUnion wird als Ersatz für Delphis Operator + verwendet. A + B ist gleich SetUnion(A, B).

ASet := BSet + CSet;
// should be changed to:
ASet := SetUnion(BSet,CSet);
// in order to achieve the desired script result.

SetDifference-Funktion

Die Funktion SetDifference wird als Ersatz für Delphis Operator - verwendet. A - B ist gleich SetDifference(A, B).

SetIntersection-Funktion

Die Funktion SetIntersection wird als Ersatz für Delphis Operator * verwendet. A * B ist gleich SetIntersection(A, B).

SubSet-Funktion

Die Funktion SubSet wird als Ersatz für Object Pascals Operator <= verwendet. A <= B ist gleich SubSet(A, B).

Verwendung von Ausnahmebehandlern

Das Schlüsselwort Try leitet eine Try-Except-Anweisung oder eine Try-Finally-Anweisung ein. Diese beiden Anweisungen sind verwandt, dienen jedoch unterschiedlichen Zwecken:

Try-Finally

Bei Try-Finally werden die Anweisungen im Finally-Block immer ausgeführt, unabhängig davon, ob eine Ausnahme aus dem Try-Block, Exit oder Break auftritt. Verwenden Sie den Try-Finally-Block, um temporäre Objekte und andere Ressourcen freizugeben und Bereinigungsaktivitäten durchzuführen.

Typischerweise wird in einer Unterroutine nur eine Try-Finally-Anweisung benötigt.

Example:

Reset(F);
Try
  // process file F
Finally
  CloseFile(F);
End;

Try-Except

Verwenden Sie Try-Except, um Ausnahmefälle zu behandeln. Zum Beispiel, um bestimmte Ausnahmen abzufangen und etwas Nützliches damit zu tun, etwa sie in einem Fehlerprotokoll zu protokollieren oder ein benutzerfreundliches Dialogfeld zu erstellen. Da das Schlüsselwort On in DelphiScript nicht unterstützt wird, wird die Anweisung Raise innerhalb des Blocks Except verwendet.

Example:

Try
  X := Y/Z;
Except
  Raise('A divide by zero error!');
End;

Raise

Das Schlüsselwort Raise steht in Zusammenhang mit dem Schlüsselwort Try. Das Schlüsselwort Raise kann ohne Parameter verwendet werden, um die letzte Ausnahme erneut auszulösen. Es kann auch mit einem Zeichenfolgenparameter verwendet werden, um mit einer bestimmten Meldung eine Ausnahme auszulösen.

Example:

Raise(Format('Invalid Value Entered : %d', [Height]));

Beachten Sie, dass die Objekte Exception (verfügbar in Embarcadro Delphi) nicht verwendet werden können, da das Schlüsselwort On nicht unterstützt wird.

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