Funkcje

Poniżej omówiono typowe instrukcje funkcyjne stosowane w języku DelphiScript. Zakres funkcji DelphiScript został podzielony na sekcje poświęcone procedurom obsługi plików (FileIO), procedurom matematycznym, procedurom łańcuchowym oraz procedurom rozszerzeń.

Obliczanie wyrażeń za pomocą funkcji Evaluate

Wbudowana funkcja Evaluate interpretuje ciąg znaków zawierający prawidłowe wyrażenie matematyczne w czasie wykonywania i zwraca wynik. Na przykład można napisać skrypt taki jak Evaluate(ProcNames[ProcIndex]); , a procedura określona w ProcNames[ProcIndex] zostanie wywołana.

Aby obliczyć takie wyrażenie, można użyć Evaluate , w której wyrażenie jest określone przez Expr . Na przykład można obliczyć wyrażenia takie jak poniższe:

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

Przekazywanie parametrów do funkcji i procedur

Zarówno funkcje, jak i procedury zdefiniowane w skrypcie mogą być zadeklarowane tak, aby przyjmowały parametry. Ponadto funkcje są definiowane tak, aby zwracały wartość. Typy parametrów w deklaracjach procedur/funkcji są ignorowane i można je pominąć. Na przykład poniższy kod jest poprawny:

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

Wychodzenie z procedury

DelphiScript udostępnia Exit i Break , które wymuszają zakończenie procedury przed jej naturalnym zakończeniem. Na przykład, jeśli wartość parametru jest nieodpowiednia, można wyświetlić ostrzeżenie dla użytkownika i zakończyć procedurę, jak pokazuje poniższy przykład.

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

Procedury operacji wejścia/wyjścia

DelphiScript posiada następujące procedury operacji wejścia/wyjścia:

Append

AssignFile

ChDir

CloseFIle

Eof

Eoln

Erase

GetDir

MkDir

Read

Readln

Reset

Rewrite

RmDir

Write

Writeln

 

 

DelphiScript umożliwia zapisywanie informacji do pliku tekstowego, a ponieważ jest to język beztypowy, wszystkie wartości muszą zostać najpierw przekonwertowane na ciągi znaków.

W tym przypadku Read i ReadLn procedury są równoważne — odczytują wiersz aż do następnego wiersza, nie wliczając go. Procedura Writeln(String) procedura jest równoważna procedurze Write(S) i Write(LineFeed + CarriageReturn) procedurze.

Aby zapisać plik tekstowy, należy użyć funkcji AssignFile, ReWrite, Writeln oraz CloseFile procedury. Aby odczytać plik tekstowy, użyj procedury AssignFile, Reset, Readlnoraz CloseFile procedur. Poniższy przykład zapisuje dane do pliku tekstowego i dodaje znacznik końca linii. Zaleca się stosowanie bloku Try / Finally / End bloku, aby zapewnić bezpieczeństwo skryptów w przypadku awarii operacji wejścia/wyjścia.

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;

Funkcje matematyczne

DelphiScript posiada następujące procedury matematyczne:

Abs

ArcTan

Cos

Exp

Frac

Int

Random

Randomize

Round

Sin

Sqr

Sqrt

Trunc

 

 

Procedury łańcuchowe

DelphiScript posiada następujące procedury łańcuchowe, które umożliwiają manipulowanie łańcuchami znaków lub pojedynczymi znakami. W poniższej tabeli przedstawiono jedynie podzbiór procedur łańcuchowych (większość procedur łańcuchowych używanych przez DelphiScript jest importowana z jednostki SysUtils programu Embarcadero Delphi):

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

 

 

Procedury łańcuchowe, które są not obsługiwane przez DelphiScript, zostały przedstawione w poniższej tabeli:

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

 

Procedury rozszerzeń

Procedury rozszerzeń są używane podczas pracy z procesami serwerowymi (polecenie to spakowany proces serwerowy z parametrami, jeśli takie istnieją) w skryptach, zwłaszcza gdy konieczne jest pobranie lub ustawienie ciągów znaków jako parametrów procesów. Niektóre z tych procedur wymieniono poniżej.

Aby wykonać parametry procesów w skrypcie, mogą być potrzebne następujące funkcje:

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

 

Korzystanie z zestawów w DelphiScript

Embarcadero Delphi Set oraz In oraz operatorów zbiorów +, -, *, = i >= nie są obsługiwane w DelphiScript. Odpowiedniki słów kluczowych operatorów zbiorów przedstawiono w poniższej tabeli.

W DelphiScript nie ma typów zbiorów. Aby korzystać ze zbiorów w skryptach DelphiScript, należy używać wbudowanych funkcji: MkSet, MkSetRange, InSet, SetUnion, SetDifference, SetIntersectionoraz SubSet funkcje umożliwiające manipulowanie zbiorami w skrypcie DelphiScript. Zostały one opisane bardziej szczegółowo poniżej.

Operatory zbiorów

Embarcadero Delphi Set Operator keyword

Equivalent DelphiScript Set Operator keyword

+

SetUnion

-

SetDifference

*

SetIntersection

=

SubSet

=

=

>

>

In

InSet

Funkcja MkSet

Funkcja MkSet jest konstruktorem zbioru z zmienną liczbą argumentów. Na przykład:

Font.Style = MkSet(fsBold,fsItalic);

Symbol MkSet(fsBold,fsItalic) oznacza tutaj tylko dwa elementy zbioru; fsBold a fsItalic.

Funkcja MkSetRange

Funkcja MkSetRange jest konstruktorem zbioru z zakresem argumentów. Na przykład:

LayerSet := MkSetRange(eTopLayer,eBottomLayer);

Funkcja MkSetRange(eTopLayer,eBottomLayer) funkcja określa zakres warstw od eTopLayer do eBottomLayer.

Funkcja InSet

Ta InSet funkcja służy jako zamiennik operatora In . A in B jest równa InSet(A, B).

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

Funkcja SetUnion

Funkcja SetUnion jest używana jako zamiennik operatora + . A + B jest równa SetUnion(A, B).

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

Funkcja SetDifference

Funkcja SetDifference jest wykorzystywana jako zamiennik operatora - . A - B jest równa SetDifference(A, B).

Funkcja SetIntersection

Funkcja SetIntersection jest wykorzystywana jako zamiennik operatora * . A * B jest równa SetIntersection(A, B).

Funkcja SubSet

Funkcja SubSet jest używana jako zamiennik operatora = w języku Object Pascal. A = B jest równa SubSet(A, B).

Korzystanie z procedur obsługi wyjątków

Słowo kluczowe Try wprowadza instrukcję Try-Except lub Try-Finally. Te dwie instrukcje są ze sobą powiązane, ale służą różnym celom:

Try-Finally

W przypadku Try-Finally instrukcje w bloku Finally są zawsze wykonywane, niezależnie od tego, czy wystąpi wyjątek z bloku Try, Exit czy Break. Bloku Try-Finally należy używać do zwalniania obiektów tymczasowych i innych zasobów oraz do wykonywania czynności porządkujących.

Zazwyczaj w podprogramie potrzebna jest tylko jedna instrukcja Try-Finally.

Example:

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

Try-Except

Bloku Try-Except należy używać do obsługi sytuacji wyjątkowych. Na przykład w celu przechwycenia określonych wyjątków i wykonania z nimi użytecznych czynności, takich jak zapisanie ich w dzienniku błędów lub wyświetlenie przyjaznego okna dialogowego. Ponieważ On nie jest obsługiwane w DelphiScript, instrukcja Raise instrukcja jest używana wewnątrz bloku Except bloku.

Example:

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

Raise

Słowo Raise słowo kluczowe jest powiązane ze słowem kluczowym Try . Słowo Raise Słowo kluczowe „raise” może być używane bez parametrów w celu ponownego zgłoszenia ostatniego wyjątku. Można je również używać z parametrem typu ciąg znaków, aby zgłosić wyjątek z określonym komunikatem.

Example:

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

Należy pamiętać, że ponieważ On słowo kluczowe nie jest obsługiwane, nie można używać obiektów Exception nie można korzystać z obiektów (dostępnych w Embarcadro Delphi).

AI-LocalizedTłumaczenie SI
Jeśli znajdziesz błąd, zaznacz tekst/obraz i naciśnij Ctrl + Enter aby wysłać nam wiadomość.
Dostępność funkcji

Dostępne funkcje zależą od tego, z którego rozwiązania Altium korzystasz – Altium Develop, Altium Agile Teams, Altium Agile Enterprise lub Altium Designer (w ramach aktywnej subskrypcji terminowej).

Jeśli opisana funkcja nie jest widoczna w Twoim oprogramowaniu, skontaktuj się z działem sprzedaży Altium, aby dowiedzieć się więcej.

Starsza dokumentacja

Dokumentacja Altium Designer nie jest już wersjonowana. Jeśli potrzebujesz dostępu do dokumentacji dla starszych wersji Altium Designer, odwiedź sekcję Starsza dokumentacja na stronie Inne instalatory.

Content