Funciones
A continuación se describen las instrucciones de función más habituales del lenguaje DelphiScript. El conjunto de funciones de DelphiScript se presenta en secciones dedicadas a las rutinas de E/S de archivos, las rutinas matemáticas, las rutinas de cadenas y las rutinas de extensión.
Cálculo de expresiones con la función Evaluate
La función integrada EvaluateEvaluate(ProcNames[ProcIndex]);ProcNames[ProcIndex]
Para calcular una expresión de este tipo, se puede utilizar el EvaluateExpr
Evaluate('2+5'); Evaluate('((10+15)-5)/2*5'); Evaluate('sin(3.1415926/2)*10'); Evaluate('2.5*log(3)');
Pasar parámetros a funciones y procedimientos
Tanto las funciones como los procedimientos definidos en un script pueden declararse para aceptar parámetros. Además, las funciones se definen para devolver un valor. Los tipos de los parámetros en las declaraciones de procedimientos y funciones se ignoran y pueden omitirse. Por ejemplo, este código es correcto:
Function sum(a, b) : integer; Begin Result := a + b; End;
Salir de un procedimiento
DelphiScript proporciona ExitBreak
Procedure DisplayName (s); Begin If s = '' Then Begin ShowMessage('Please enter a name'); Exit; End; ShowMessage(S + ' is shown'); End;
Rutinas de E/S de archivos
DelphiScript dispone de las siguientes rutinas de E/S:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DelphiScript le permite escribir información en un archivo de texto y, dado que es un lenguaje sin tipos, todos los valores deben convertirse primero en cadenas.
A continuación, ReadReadLnWriteln(String)Write(S)Write(LineFeed + CarriageReturn)
Para escribir un archivo de texto, utiliza la 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;
Rutinas matemáticas
DelphiScript dispone de las siguientes rutinas matemáticas:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Rutinas de cadenas
DelphiScript dispone de las siguientes rutinas de cadenas, que permiten manipular cadenas o caracteres. En la tabla siguiente solo se muestra un subconjunto de rutinas de cadenas (la mayoría de las rutinas de cadenas utilizadas por DelphiScript se importan de la unidad SysUtils de Embarcadero Delphi):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Las rutinas de cadenas
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Rutinas de extensión
Las rutinas de extensión se utilizan al trabajar con procesos de servidor (un comando es un proceso de servidor empaquetado con parámetros, si los hay) en scripts, especialmente si es necesario extraer o establecer cadenas para los parámetros de los procesos. A continuación se enumeran algunas de estas rutinas.
Para ejecutar los parámetros de los procesos en un script, pueden ser necesarias las siguientes funciones:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Uso de conjuntos en DelphiScript
Embarcadero Delphi's SetIn+, -, *, = >=
DelphiScript no dispone de tipos de conjuntos. Para utilizar conjuntos en los scripts de DelphiScript, utilice las funciones integradas; MkSetMkSetRangeInSetSetUnionSetDifferenceSetIntersectionSubSet
Operadores de conjuntos
|
|
- |
|
* |
|
|
|
|
|
|
|
|
|
Función MkSet
La MkSet
Font.Style = MkSet(fsBold,fsItalic);
El MkSet(fsBold,fsItalic) fsBoldfsItalic
Función MkSetRange
La MkSetRange
LayerSet := MkSetRange(eTopLayer,eBottomLayer);
La MkSetRange(eTopLayer,eBottomLayer)eTopLayereBottomLayer
Función InSet
Esta InSetInA in BInSet(A, B)
If InSet(A,B) then ShowMessage('A is in B set') Else ShowMessage('A not in B set');
Función SetUnion
La SetUnion + A + BSetUnion(A, B)
ASet := BSet + CSet; // should be changed to: ASet := SetUnion(BSet,CSet); // in order to achieve the desired script result.
Función SetDifference
La SetDifference - A - BSetDifference(A, B)
Función SetIntersection
La SetIntersection * A * BSetIntersection(A, B)
Función SubSet
La SubSet=A = BSubSet(A, B)
Uso de controladores de excepciones
La Try
Try-Finally
Con Try-Finally, las instrucciones del bloque Finally se ejecutan siempre, independientemente de si se produce una excepción en el bloque Try, o si se ejecuta Exit o Break. Utilice el bloque Try-Finally para liberar objetos temporales y otros recursos, así como para realizar tareas de limpieza.
Normalmente, solo se necesita una instrucción Try-Finally en una subrutina.
Reset(F); Try // process file F Finally CloseFile(F); End;
Try-Except
Utiliza Try-Except para gestionar casos excepcionales. Por ejemplo, para detectar excepciones específicas y realizar alguna acción útil con ellas, como registrarlas en un registro de errores o mostrar un cuadro de diálogo intuitivo. Dado que la OnRaiseExcept
Try X := Y/Z; Except Raise('A divide by zero error!'); End;
Raise
La RaiseTryRaise
Raise(Format('Invalid Value Entered : %d', [Height]));
Ten en cuenta que, dado que la OnException