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 Evaluate interpreta una cadena que contiene una expresión matemática válida durante la ejecución y devuelve un resultado. Por ejemplo, puedes escribir un script como Evaluate(ProcNames[ProcIndex]); y se llamará al procedimiento especificado en ProcNames[ProcIndex] será invocado.

Para calcular una expresión de este tipo, se puede utilizar el Evaluate , en el que la expresión se especifica mediante el Expr . Por ejemplo, se pueden calcular expresiones como las siguientes:

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 Exit y Break para forzar la salida de un procedimiento antes de que finalice de forma natural. Por ejemplo, si el valor de un parámetro no es adecuado, es posible que desees mostrar una advertencia al usuario y salir, tal y como muestra el ejemplo siguiente.

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:

Append

AssignFile

ChDir

CloseFIle

Eof

Eoln

Erase

GetDir

MkDir

Read

Readln

Reset

Rewrite

RmDir

Write

Writeln

 

 

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, Read y ReadLn las rutinas son equivalentes: leen una línea hasta la siguiente línea, sin incluirla. Una Writeln(String) rutina es equivalente a una Write(S) y una Write(LineFeed + CarriageReturn) rutina.

Para escribir un archivo de texto, utiliza la AssignFile, ReWrite, Writeln y CloseFile procedimientos. Para leer un archivo de texto, utiliza el AssignFile, Reset, Readln, y CloseFile procedimientos. El ejemplo siguiente escribe en un archivo de texto y añade un marcador de fin de línea. Se recomienda utilizar el Try / Finally / End se recomienda utilizar el bloque para garantizar la seguridad de los scripts en caso de fallo de E/S.

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;

Rutinas matemáticas

DelphiScript dispone de las siguientes rutinas matemáticas:

Abs

ArcTan

Cos

Exp

Frac

Int

Random

Randomize

Round

Sin

Sqr

Sqrt

Trunc

 

 

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):

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

 

 

Las rutinas de cadenas not compatibles con DelphiScript se describen en la tabla siguiente:

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

 

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:

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

 

Uso de conjuntos en DelphiScript

Embarcadero Delphi's Set y In , así como los operadores de conjuntos +, -, *, = y >= no son compatibles con DelphiScript. Las palabras clave equivalentes de los operadores de conjuntos se recogen en la tabla siguiente.

DelphiScript no dispone de tipos de conjuntos. Para utilizar conjuntos en los scripts de DelphiScript, utilice las funciones integradas; MkSet, MkSetRange, InSet, SetUnion, SetDifference, SetIntersection, y SubSet funciones que permiten manipular conjuntos en un script de DelphiScript. A continuación se describen con más detalle.

Operadores de conjuntos

Embarcadero Delphi Set Operator keyword

Equivalent DelphiScript Set Operator keyword

+

SetUnion

-

SetDifference

*

SetIntersection

=

SubSet

=

=

>

>

In

InSet

Función MkSet

La MkSet función es un constructor de conjuntos con un número variable de argumentos. Por ejemplo:

Font.Style = MkSet(fsBold,fsItalic);

El MkSet(fsBold,fsItalic) aquí denota únicamente dos elementos del conjunto; fsBold y fsItalic.

Función MkSetRange

La MkSetRange función es un constructor de conjuntos con un rango de argumentos. Por ejemplo:

LayerSet := MkSetRange(eTopLayer,eBottomLayer);

La MkSetRange(eTopLayer,eBottomLayer) función denota un rango de capas desde eTopLayer hasta eBottomLayer.

Función InSet

Esta InSet función se utiliza como sustituto del In . A in B es igual a InSet(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 función se utiliza como sustituto del + . A + B es igual a SetUnion(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 función se utiliza como sustituto del - . A - B es igual a SetDifference(A, B).

Función SetIntersection

La SetIntersection función se utiliza como sustituto del * . A * B es igual a SetIntersection(A, B).

Función SubSet

La SubSet función se utiliza como sustituto del operador = . A = B es igual a SubSet(A, B).

Uso de controladores de excepciones

La Try introduce una instrucción Try-Except o una instrucción Try-Finally. Estas dos instrucciones están relacionadas, pero tienen finalidades diferentes:

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.

Example:

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 On no es compatible con DelphiScript, la Raise instrucción se utiliza dentro del Except bloque.

Example:

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

Raise

La Raise palabra clave está relacionada con la Try . La Raise palabra clave se puede utilizar sin parámetros para volver a lanzar la última excepción. También se puede utilizar con un parámetro de cadena para lanzar una excepción utilizando un mensaje específico.

Example:

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

Ten en cuenta que, dado que la On palabra clave no es compatible, no se pueden utilizar los Exception objetos (disponibles en Embarcadero Delphi) no se pueden utilizar.

AI-LocalizedLocalizado por IA
Si encuentra un problema, seleccione el texto/imagen y presioneCtrl + Enterpara enviarnos sus comentarios.
Disponibilidad de funciones

Las funciones disponibles para usted dependen de qué solución de Altium tenga: Altium Develop, Altium Agile Teams, Altium Agile Enterprise o Altium Designer (con suscripción activa).

Si no ve una función documentada en su software actual, contacte con Ventas de Altium para obtener más información.

Documentación heredada

La documentación de Altium Designer ya no está versionada. Si necesita acceder a la documentación de versiones anteriores de Altium Designer, visite la sección Documentación heredada de la página de Otros instaladores.

Contenido