---
title: Funciones integradas
slug: develop/es/funciones-integradas
docTags: 
createdAt: 2025-03-11T07:07:17.199Z
---

BrightScript incluye un conjunto de funciones intrínsecas integradas con alcance de módulo. También hay disponibles varias funciones de E/S de archivos, cadenas, matemáticas y sistema mediante el objeto *roGlobal*.

## Type()

`Type(a As Variable) As String` 

Esta función devuelve el tipo de la variable y/u objeto pasado.

## GetGlobalAA()

`GetGlobalAA() As Object`

Esta función obtiene el arreglo asociativo global para el script actual.

## Rnd()

`Rnd(range As Integer) As Integer`
`Rnd(0) As Float`

Si se pasa un entero positivo distinto de cero, esta función devuelve un entero pseudoaleatorio entre 1 y el valor del argumento. El rango incluye el valor del argumento: por ejemplo, llamar a `Rnd(55)` devolverá un entero pseudoaleatorio mayor que 0 y menor que 56.

Si el argumento es 0, esta función devuelve un valor Float pseudoaleatorio entre 0 y 1.

:::hint{type="info"}
**Nota**
Las funciones `Rnd()` utilizan un número semilla pseudoaleatorio que se genera internamente y no es accesible para el usuario.
:::

## Box()

`Box(type As Dynamic) As Object`

Esta función devuelve una versión de objeto del tipo intrínseco especificado. Los objetos se pasarán sin modificaciones.

### Ejemplo

```text
b = box("string")
b = box(b)  ' b does not change
```

## Run()

`Ejecutar(file_name As String, [optional_arg As Dynamic, …]) As Dynamic`
`Ejecutar(file_names As roArray, [optional_arg As Dynamic, …]) As Dynamic`

Esta función ejecuta uno o más scripts desde el script actual. Puede agregar argumentos opcionales, que se pasarán a la función `Main()` de los scripts. El script llamado también puede devolver argumentos al script que realiza la llamada.

Si se pasa un nombre de archivo de cadena, la función compilará y ejecutará el archivo correspondiente. Si se pasa un arreglo de archivos, la función compilará cada archivo, los vinculará entre sí y los ejecutará.

### Ejemplo

```text
Sub Main()
       Run("test.brs")
       BreakIfRunError(LINE_NUM)
       Print Run("test2.brs", "arg 1", "arg 2")
       if Run(["file1.brs","file2.brs"])<>4 then stop
       BreakIfRunError(LINE_NUM)
       stop
End Sub


Sub BreakIfRunError(ln)
       el=GetLastRunCompileError()
       if el=invalid then
             el=GetLastRunRuntimeError()
             if el=&hFC or el=&hE2 then return  
             'FC==ERR_NORMAL_END, E2=ERR_VALUE_RETURN
             print "Runtime Error (line ";ln;"): ";el
             stop
       else
             print "compile error (line ";ln;")"
             for each e in el
                    for each i in e
                          print i;": ";e[i]
                    end for
             end for
      
             stop
       end if
End Sub
```

## Eval()

`Eval(code_snippet As String) As Dynamic`

Esta función ejecuta el fragmento de código pasado en el contexto de la función actual. La función compila el fragmento y luego ejecuta el byte-code. Si el código se compila y ejecuta correctamente, devolverá cero. Si el código se compila correctamente, pero encuentra un error de tiempo de ejecución, devolverá un entero que indica el código de error (usando los mismos códigos que la función `GetLastRunRuntimeError()`). Si la compilación falla, devolverá un objeto *roList*; la estructura *roList* es idéntica a la de la función `GetLastRunCompileError()` .

La función `Eval()` puede ser útil en dos casos:

- Cuando necesita generar código dinámicamente en tiempo de ejecución.
- Cuando necesita ejecutar una instrucción que podría producir un error de tiempo de ejecución, pero no desea que la ejecución del código se detenga.

### Ejemplo

```text
PRINT Eval("1/0") 'Returns a divide by zero error.
```

## GetLastRunCompileError()

`GetLastRunCompileError() As roList`

Esta función devuelve un objeto *roList* que contiene errores de compilación (o Invalid si no ocurrieron errores). Cada entrada de *roList* es un objeto *roAssociativeArray* que contiene las siguientes claves:

- `ERRSTR`: El tipo de error de compilación (como String)
- `FILESPEC`: El URI de archivo del script que contiene el error (como String)
- `ERRNO`: El número de error (como Integer)
- `LINENO`: El número de línea donde ocurre el error (como Integer)

Los siguientes son posibles valores de `ERRNO` :

| **Código de error** |     | **Descripción**                  | **Descripción ampliada**                                                       |
| ------------------- | --- | -------------------------------- | ------------------------------------------------------------------------------ |
| \&hBF               | 191 | ERR\_NW                          | `ENDWHILE` aparece sin una instrucción.                                        |
| \&hBE               | 190 | ERR\_MISSING\_ENDWHILE           | La instrucción `MIENTRAS` aparece sin la instrucción `ENDWHILE`.               |
| \&hBC               | 188 | ERR\_MISSING\_ENDIF              | Se llegó al final del script sin encontrar una instrucción `ENDIF`.            |
| \&hBB               | 187 | ERR\_NOLN                        | No se encontró el número de línea.                                             |
| \&hBA               | 186 | ERR\_LNSEQ                       | Error en la secuencia del número de línea.                                     |
| \&hB9               | 185 | ERR\_LOADFILE                    | Error al cargar el archivo.                                                    |
| \&hB8               | 184 | ERR\_NOMATCH                     | La instrucción `PARTIDO` no coincide.                                          |
| \&hB7               | 183 | ERR\_UNEXPECTED\_EOF             | Se encontró un final inesperado de cadena durante la compilación de la cadena. |
| \&hB6               | 182 | ERR\_FOR\_NEXT\_MISMATCH         | La variable en `SIGUIENTE` no coincide con `PARA`.                             |
| \&hB5               | 181 | ERR\_NO\_BLOCK\_END              |                                                                                |
| \&hB4               | 180 | ERR\_LABELTWICE                  | La etiqueta se definió más de una vez.                                         |
| \&hB3               | 179 | ERR\_UNTERMED\_STRING            | La cadena literal no tiene comillas de cierre.                                 |
| \&hB2               | 178 | ERR\_FUN\_NOT\_EXPECTED          |                                                                                |
| \&hB1               | 177 | ERR\_TOO\_MANY\_CONST            |                                                                                |
| \&hB0               | 176 | ERR\_TOO\_MANY\_VAR              |                                                                                |
| \&hAF               | 175 | ERR\_EXIT\_WHILE\_NOT\_IN\_WHILE |                                                                                |
| \&hAE               | 174 | ERR\_INTERNAL\_LIMIT\_EXCEDED    |                                                                                |
| \&hAD               | 173 | ERR\_SUB\_DEFINED\_TWICE         |                                                                                |
| \&hAC               | 172 | ERR\_NOMAIN                      |                                                                                |
| \&hAB               | 171 | ERR\_FOREACH\_INDEX\_TM          |                                                                                |
| \&hAA               | 170 | ERR\_RET\_CANNOT\_HAVE\_VALUE    |                                                                                |
| \&hA9               | 169 | ERR\_RET\_MUST\_HAVE\_VALUE      |                                                                                |
| \&hA8               | 168 | ERR\_FUN\_MUST\_HAVE\_RET\_TYPE  |                                                                                |
| \&hA7               | 167 | ERR\_INVALID\_TYPE               |                                                                                |
| \&hA6               | 166 | ERR\_NOLONGER                    | Funcionalidad ya no compatible.                                                |
| \&hA5               | 165 | ERR\_EXIT\_FOR\_NOT\_IN\_FOR     |                                                                                |
| \&hA4               | 164 | ERR\_MISSING\_INITILIZER         |                                                                                |
| \&hA3               | 163 | ERR\_IF\_TOO\_LARGE              |                                                                                |
| \&hA2               | 162 | ERR\_RO\_NOT\_FOUND              |                                                                                |
| \&hA1               | 161 | ERR\_TOO\_MANY\_LABELS           |                                                                                |
| \&hA0               | 160 | ERR\_VAR\_CANNOT\_BE\_SUBNAME    |                                                                                |
| \&h9F               | 159 | ERR\_INVALID\_CONST\_NAME        |                                                                                |
| \&h9E               | 158 | ERR\_CONST\_FOLDING              |                                                                                |

## GetLastRunRuntimeError()

`GetLastRunRuntimeError() As Integer`

Esta función devuelve el código de error que resultó de la última función `Run()`.

Estos códigos indican un resultado normal:

| **Código de error** |     | **Descripción**        | **Descripción ampliada**                                                                             |
| ------------------- | --- | ---------------------- | ---------------------------------------------------------------------------------------------------- |
| \&hFF               | 255 | ERR\_OKAY              |                                                                                                      |
| \&hFC               | 252 | ERR\_NORMAL\_END       | La ejecución terminó normalmente, pero con terminación (p. ej., END, shell "exit", ventana cerrada). |
| \&hE2               | 226 | ERR\_VALUE\_RETURN     | Return ejecutado con valor devuelto en la pila.                                                      |
| \&hE0               | 224 | ERR\_NO\_VALUE\_RETURN | Return ejecutado sin valor devuelto en la pila.                                                      |

Los siguientes códigos indican errores en tiempo de ejecución:

| **Código de error** |     | **Descripción**                | **Descripción ampliada**                                                                                   |
| ------------------- | --- | ------------------------------ | ---------------------------------------------------------------------------------------------------------- |
| \&hFE               | 254 | ERR\_INTERNAL                  | Ocurrió una condición inesperada.                                                                          |
| \&hFD               | 253 | ERR\_UNDEFINED\_OPCD           | No se pudo manejar el opcode.                                                                              |
| \&hFB               | 251 | ERR\_UNDEFINED\_OP             | No se pudo manejar el operador de expresión.                                                               |
| \&hFA               | 250 | ERR\_MISSING\_PARN             |                                                                                                            |
| \&hF9               | 249 | ERR\_STACK\_UNDER              | No hay ningún valor para extraer de la pila.                                                               |
| \&hF8               | 248 | ERR\_BREAK                     | `scriptBreak()` función llamada.                                                                           |
| \&hF7               | 247 | ERR\_STOP                      | Declaración STOP ejecutada.                                                                                |
| \&hF6               | 246 | ERR\_RO0                       | bscNewComponent falló porque no se encontró la clase del objeto.                                           |
| \&hF5               | 245 | ERR\_R01                       | La llamada a la función miembro de BrightScript no tiene el número correcto de parámetros.                 |
| \&hF4               | 244 | ERR\_RO2                       | No se encontró la función miembro de BrightScript en el objeto o la interfaz.                              |
| \&hF3               | 243 | ERR\_RO3                       | La interfaz de BrightScript no es miembro del objeto.                                                      |
| \&hF2               | 242 | ERR\_TOO\_MANY\_PARAM          | Demasiados parámetros de función para manejar.                                                             |
| \&hF1               | 241 | ERR\_WRONG\_NUM\_PARAM         | Número incorrecto de parámetros de función.                                                                |
| \&hF0               | 240 | ERR\_RVIG                      | La función devuelve un valor, pero se ignora.                                                              |
| \&hEF               | 239 | ERR\_NOTPRINTABLE              | Valor no imprimible.                                                                                       |
| \&hEE               | 238 | ERR\_NOTWAITABLE               | `ESPERA` no se puede aplicar al objeto porque el objeto no tiene una interfaz *roMessagePort*.             |
| \&hED               | 237 | ERR\_MUST\_BE\_STATIC          | Las llamadas de interfaz del tipo rotINTERFACE deben ser estáticas.                                        |
| \&hEC               | 236 | ERR\_RO4                       | Operador de punto "." usado en un objeto que no contiene una referencia válida de objeto o interfaz.       |
| \&hEB               | 235 | ERR\_NOTYPEOP                  | Operación intentada en dos operandos sin tipo.                                                             |
| \&hE9               | 233 | ERR\_USE\_OF\_UNINIT\_VAR      | Variable no inicializada utilizada ilegalmente.                                                            |
| \&hE8               | 232 | ERR\_TM2                       | Índice no numérico aplicado al arreglo.                                                                    |
| \&hE7               | 231 | ERR\_ARRAYNOTDIMMED            |                                                                                                            |
| \&hE6               | 230 | ERR\_USE\_OF\_UNINIT\_BRSUBREF | Referencia a SUB no inicializado.                                                                          |
| \&hE5               | 229 | ERR\_MUST\_HAVE\_RETURN        |                                                                                                            |
| \&hE4               | 228 | ERR\_INVALID\_LVALUE           | El lado izquierdo de la expresión no es válido.                                                            |
| \&hE3               | 227 | ERR\_INVALID\_NUM\_ARRAY\_IDX  | El número de índices de matriz no es válido.                                                               |
| \&hE1               | 225 | ERR\_UNICODE\_NOT\_SUPPORTED   |                                                                                                            |
| \&hE0               | 224 | ERR\_NOTFUNOPABLE              |                                                                                                            |
| \&hDF               | 223 | ERR\_STACK\_OVERFLOW           |                                                                                                            |
| \&h20               | 32  | ERR\_CN                        | Continuar (`cont` o `c`) no permitido.                                                                     |
| \&h1C               | 28  | ERR\_STRINGTOLONG              |                                                                                                            |
| \&h1A               | 26  | ERR\_OS                        | Se ha agotado el espacio de cadena.                                                                        |
| \&h18               | 24  | ERR\_TM                        | Se ha producido una incompatibilidad de tipos (incompatibilidad de operación de cadena/número).            |
| \&h14               | 20  | ERR\_DIV\_ZERO                 |                                                                                                            |
| \&h12               | 18  | ERR\_DD                        | Se intentó redimensionar la matriz.                                                                        |
| \&h10               | 16  | ERR\_BS                        | Subíndice de matriz fuera de límites.                                                                      |
| \&h0E               | 14  | ERR\_MISSING\_LN               |                                                                                                            |
| \&h0C               | 12  | ERR\_OUTOFMEM                  |                                                                                                            |
| \&h08               | 8   | ERR\_FC                        | Parámetro no válido pasado a la función/matriz (p. ej., una dimensión de matriz negativa o raíz cuadrada). |
| \&h06               | 6   | ERR\_OD                        | Datos agotados (READ).                                                                                     |
| \&h04               | 4   | ERR\_RG                        | Retorno sin Gosub.                                                                                         |
| \&h02               | 2   | ERR\_SYNTAX                    |                                                                                                            |
| \&h00               | 0   | ERR\_NF                        | `Siguiente` sin `Para`.                                                                                    |

