Funktionen

Im Folgenden werden die gängigen Funktionsanweisungen der Sprache DelphiScript behandelt. Die Palette der DelphiScript-Funktionen wird in Abschnitten zu Datei-E/A-Routinen, mathematischen Routinen, Zeichenfolgen-Routinen und Erweiterungsroutinen vorgestellt.

Berechnung von Ausdrücken mit der Funktion „Evaluate“

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 das folgende schreiben Evaluate(ProcNames[ProcIndex]); und die in ProcNames[ProcIndex] 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 beispielsweise 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. Darüber hinaus sind Funktionen so definiert, dass sie einen Wert zurückgeben. Die Typen der Parameter in Prozedur-/Funktionsdeklarationen werden ignoriert und können weggelassen werden. Der folgende Code ist beispielsweise korrekt:

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

Beenden einer Prozedur

DelphiScript bietet Exit und Break Anweisungen, um den Abbruch einer Prozedur zu erzwingen, bevor diese auf natürliche Weise beendet würde. Wenn beispielsweise der Wert eines Parameters nicht geeignet ist, möchten Sie möglicherweise eine Warnung an den Benutzer ausgeben und die Prozedur beenden, 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;

Datei-E/A-Routinen

DelphiScript verfügt über die folgenden E/A-Routinen:

Append

AssignFile

ChDir

CloseFIle

Eof

Eoln

Erase

GetDir

MkDir

Read

Readln

Reset

Rewrite

RmDir

Write

Writeln

 

 

DelphiScript bietet Ihnen die Möglichkeit, Informationen in eine Textdatei zu schreiben. Da DelphiScript eine typfreie Sprache ist, müssen alle Werte zunächst in Zeichenfolgen konvertiert werden.

Hier Read und ReadLn Routinen sind gleichwertig – sie lesen eine Zeile bis zur nächsten Zeile (die selbst nicht mit eingelesen wird). Eine Writeln(String) Routine entspricht einer Write(S) und einer Write(LineFeed + CarriageReturn) Routine.

Um eine Textdatei zu schreiben, verwenden Sie die AssignFile, ReWrite, Writeln und CloseFile Prozeduren. Um eine Textdatei einzulesen, verwenden Sie die AssignFile, Reset, Readlnund CloseFile Prozeduren. Das folgende Beispiel schreibt in eine Textdatei und fügt ein Zeilenendezeichen hinzu. Die Verwendung des Try / Finally / End Block wird empfohlen, um Skripte im Falle eines E/A-Fehlers sicher zu gestalten.

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;

Mathematikroutinen

DelphiScript verfügt über die folgenden mathematischen Routinen:

Abs

ArcTan

Cos

Exp

Frac

Int

Random

Randomize

Round

Sin

Sqr

Sqrt

Trunc

 

 

Zeichenfolgenroutinen

DelphiScript verfügt über die folgenden Zeichenfolgenroutinen, mit denen Zeichenfolgen oder Zeichen bearbeitet werden können. In der folgenden Tabelle ist nur eine Teilmenge der Zeichenfolgenroutinen aufgeführt (die meisten von DelphiScript verwendeten Zeichenfolgenroutinen werden aus der SysUtils-Unit von Embarcadero Delphi 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 not von DelphiScript unterstützt werden, 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 verpackter Serverprozess mit gegebenenfalls vorhandenen Parametern), insbesondere wenn Zeichenfolgen für die Parameter von Prozessen extrahiert oder gesetzt werden müssen. Einige dieser Routinen sind im Folgenden aufgeführt.

Um Prozessparameter 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 Sets in DelphiScript

Embarcadero Delphis Set und In Schlüsselwörter sowie die Mengenoperatoren +, -, *, = und >= werden in DelphiScript nicht unterstützt. Die entsprechenden Schlüsselwörter für Mengenoperatoren sind in der folgenden Tabelle aufgeführt.

DelphiScript verfügt über keine Mengen-Typen. Um Mengen in DelphiScript-Skripten zu verwenden, nutzen Sie die integrierten Funktionen; MkSet, MkSetRange, InSet, SetUnion, SetDifference, SetIntersection, sowie SubSet Funktionen, mit denen Mengen in einem DelphiScript-Skript bearbeitet werden können. Diese werden im Folgenden näher beschrieben.

Mengenoperatoren

Embarcadero Delphi Set Operator keyword

Equivalent DelphiScript Set Operator keyword

+

SetUnion

-

SetDifference

*

SetIntersection

=

SubSet

=

=

>

>

In

InSet

MkSet-Funktion

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

Font.Style = MkSet(fsBold,fsItalic);

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

MkSetRange-Funktion

Die MkSetRange Funktion ist ein Mengenkonstruktor mit einer Reihe von Argumenten. Zum Beispiel:

LayerSet := MkSetRange(eTopLayer,eBottomLayer);

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

InSet-Funktion

Diese InSet Funktion wird als Ersatz für den Delphi- In Operator. A in B entspricht InSet(A, B).

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

Funktion „SetUnion“

Die SetUnion Funktion dient als Ersatz für den + Operator. A + B entspricht SetUnion(A, B).

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

Funktion „SetDifference“

Die SetDifference Funktion dient als Ersatz für den - Operator. A - B entspricht SetDifference(A, B).

Funktion „SetIntersection“

Die SetIntersection Funktion dient als Ersatz für den * Operator. A * B entspricht SetIntersection(A, B).

SubSet-Funktion

Die SubSet Funktion dient als Ersatz für den = Operator. A = B entspricht SubSet(A, B).

Verwendung von Ausnahmebehandlungsroutinen

Das Try Schlüsselwort leitet eine Try-Except-Anweisung oder eine Try-Finally-Anweisung ein. Diese beiden Anweisungen sind miteinander 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 Aufräumarbeiten durchzuführen.

In der Regel wird in einer Subroutine 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. Beispielsweise, um bestimmte Ausnahmen abzufangen und sinnvoll damit umzugehen, wie sie in einem Fehlerprotokoll zu erfassen oder ein benutzerfreundliches Dialogfeld anzuzeigen. Da das On Schlüsselwort in DelphiScript nicht unterstützt wird, wird die Raise Anweisung innerhalb des Except Block verwendet.

Example:

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

Raise

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

Example:

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

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

AI-LocalizedKI-lokalisiert
Wenn Sie ein Problem feststellen, wählen Sie den Text/das Bild aus und drücken SieCtrl + Enter, um uns Ihr Feedback zu senden.
Funktionsverfügbarkeit

Die Ihnen zur Verfügung stehenden Funktionen hängen davon ab, über welche Altium-Lösung Sie verfügen – Altium Develop, Altium Agile Teams, Altium Agile Enterprise oder Altium Designer (mit aktivem Laufzeitvertrag).

Wenn Sie eine dokumentierte Funktion in Ihrer tatsächlich verwendeten Software nicht sehen, wenden Sie sich an 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