Funciones

A continuación se describen las sentencias de función comunes utilizadas por el lenguaje DelphiScript. El conjunto de funciones de DelphiScript se presenta en secciones para rutinas FileIO, rutinas matemáticas, rutinas de cadenas y 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 el tiempo de ejecución y devuelve un resultado. Por ejemplo, puede escribir un script como Evaluate(ProcNames[ProcIndex]); y se llamará al procedimiento especificado en ProcNames[ProcIndex].

Para calcular una expresión de este tipo, puede usar el método Evaluate donde la expresión se especifica mediante el parámetro Expr. Por ejemplo, puede 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)');

Paso de 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/funciones se ignoran y pueden omitirse. Por ejemplo, este código es correcto:

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

Salida de un procedimiento

DelphiScript proporciona las sentencias Exit y Break para forzar la salida de un procedimiento antes de que termine de forma natural. Por ejemplo, si el valor de un parámetro no es adecuado, quizá desee emitir una advertencia al usuario y salir, como se muestra en 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 tiene 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, como DelphiScript es un lenguaje no tipado, primero todos los valores deben convertirse en cadenas.

Aquí, las rutinas Read y ReadLn son equivalentes: leen una línea hasta la siguiente línea, pero sin incluirla. Una rutina Writeln(String) es equivalente a una rutina Write(S) y Write(LineFeed + CarriageReturn).

Para escribir un archivo de texto, utilice los procedimientos AssignFile, ReWrite, Writeln y CloseFile. Para leer un archivo de texto, use los procedimientos AssignFile, Reset, Readln y CloseFile. El siguiente ejemplo escribe en un archivo de texto y agrega un marcador de fin de línea. Se recomienda usar el bloque Try / Finally / End para hacer que los scripts sean seguros en caso de una falla 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 tiene las siguientes rutinas matemáticas:

Abs

ArcTan

Cos

Exp

Frac

Int

Random

Randomize

Round

Sin

Sqr

Sqrt

Trunc

 

 

Rutinas de cadenas

DelphiScript tiene las siguientes rutinas de cadenas, que pueden manipular cadenas o caracteres. En la tabla siguiente solo se muestra un subconjunto de las rutinas de cadenas (la mayoría de las rutinas de cadenas utilizadas por DelphiScript se importan desde 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 que not admite 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 del servidor (un comando es un proceso del servidor empaquetado con parámetros, si los hubiera) en scripts, especialmente si necesita extraer o establecer cadenas para los parámetros de los procesos. Algunas de las rutinas se enumeran a continuación.

Para ejecutar parámetros de 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

Las palabras clave Set y In de Embarcadero Delphi, y los operadores de conjuntos +, -, *, <= y >= no son compatibles con DelphiScript. Las palabras clave equivalentes de operadores de conjuntos se muestran en la tabla siguiente.

DelphiScript no tiene tipos de conjunto. Para usar conjuntos en scripts de DelphiScript, utilice las funciones integradas: MkSet, MkSetRange, InSet, SetUnion, SetDifference, SetIntersection y SubSet, 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 función MkSet es un constructor de conjuntos con un número variable de argumentos. Por ejemplo:

Font.Style = MkSet(fsBold,fsItalic);

Aquí, MkSet(fsBold,fsItalic)  denota solo dos elementos del conjunto: fsBold y fsItalic.

Función MkSetRange

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

LayerSet := MkSetRange(eTopLayer,eBottomLayer);

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

Función InSet

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

Función SetIntersection

La función SetIntersection se utiliza como sustitución del operador * de Delphi. A * B es igual a SetIntersection(A, B).

Función SubSet

La función SubSet se utiliza como sustitución del operador <= de Object Pascal. A <= B es igual a SubSet(A, B).

Uso de controladores de excepciones

La palabra clave Try introduce una sentencia Try-Except o una sentencia Try-Finally. Estas dos sentencias están relacionadas, pero tienen propósitos diferentes:

Try-Finally

Con Try-Finally, las sentencias del bloque Finally siempre se ejecutan independientemente de si ocurre una excepción en el bloque Try, Exit o Break. Utilice el bloque Try-Finally para liberar objetos temporales y otros recursos y para realizar actividades de limpieza.

Normalmente, solo se necesita una sentencia Try-Finally en una subrutina.

Example:

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

Try-Except

Use Try-Except para manejar casos excepcionales. Por ejemplo, para capturar excepciones específicas y hacer algo útil con ellas, como registrarlas en un registro de errores o crear un cuadro de diálogo amigable. Dado que la palabra clave On no es compatible con DelphiScript, la sentencia Raise se utiliza dentro del bloque Except.

Example:

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

Raise

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

Example:

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

Tenga en cuenta que, dado que la palabra clave On no es compatible, los objetos Exception (disponibles en Embarcadro Delphi) no se pueden usar.

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

Las funciones disponibles dependen de la solución de Altium que tenga: Altium Develop, una edición de Altium Agile (Agile Teams o Agile Enterprise), o Altium Designer (con suscripción activa).

Si no ve alguna función mencionada en su software, 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