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 EvaluateEvaluate(ProcNames[ProcIndex]);ProcNames[ProcIndex]
Aby obliczyć takie wyrażenie, można użyć EvaluateExpr
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 ExitBreak
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:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 ReadReadLnWriteln(String)Write(S)Write(LineFeed + CarriageReturn)
Aby zapisać plik tekstowy, należy użyć funkcji AssignFileReWriteWritelnCloseFileAssignFileResetReadlnCloseFileTry / Finally / End
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:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Procedury łańcuchowe, które są
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Korzystanie z zestawów w DelphiScript
Embarcadero Delphi SetIn+, -, *, = >=
W DelphiScript nie ma typów zbiorów. Aby korzystać ze zbiorów w skryptach DelphiScript, należy używać wbudowanych funkcji: MkSetMkSetRangeInSetSetUnionSetDifferenceSetIntersectionSubSet
Operatory zbiorów
|
|
- |
|
* |
|
|
|
|
|
|
|
|
|
Funkcja MkSet
Funkcja MkSet
Font.Style = MkSet(fsBold,fsItalic);
Symbol MkSet(fsBold,fsItalic) fsBoldfsItalic
Funkcja MkSetRange
Funkcja MkSetRange
LayerSet := MkSetRange(eTopLayer,eBottomLayer);
Funkcja MkSetRange(eTopLayer,eBottomLayer)eTopLayereBottomLayer
Funkcja InSet
Ta InSetInA in BInSet(A, B)
If InSet(A,B) then ShowMessage('A is in B set') Else ShowMessage('A not in B set');
Funkcja SetUnion
Funkcja SetUnion + A + BSetUnion(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 - A - BSetDifference(A, B)
Funkcja SetIntersection
Funkcja SetIntersection * A * BSetIntersection(A, B)
Funkcja SubSet
Funkcja SubSet=A = BSubSet(A, B)
Korzystanie z procedur obsługi wyjątków
Słowo kluczowe Try
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.
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ż OnRaiseExcept
Try X := Y/Z; Except Raise('A divide by zero error!'); End;
Raise
Słowo RaiseTryRaise
Raise(Format('Invalid Value Entered : %d', [Height]));
Należy pamiętać, że ponieważ OnException