save_bitmap

Sintaxis: include image.e
i = save_bitmap(s, st)
Descripción:
Crea un fichero de mapa de bits (.bmp) desde una secuencia 's' de 2 elementos. 'st' es el nombre del fichero de mapa de bits (bitmap) . s[1] es la paleta:

{{r,g,b}, {r,g,b}, ..., {r,g,b}}

Cada valor rojo, verde o azul está dentro del rango 0 a 255. s[2] es una secuencia 2D de secuencias, conteniendo una imagen gráfica de píxeles. Las secuencias contenidas en s[2] tienen que tener la misma longitud. 's' tiene el mismo formato que el valor devuelto por read_bitmap().

El resultado será uno de los siguientes códigos:

    global constant BMP_SUCCESS = 0,
                BMP_OPEN_FAILED = 1,
               BMP_INVALID_MODE = 4 -- modo gráfico o argumento inválido
Comentarios:
Si usa get_all_palette() para obtener la paleta antes de llamar a esta función, tiene que multiplicar las intensidades devueltas por 4 antes de llamar a save_bitmap().

Podría usar save_image() para obtener la imagen 2D para s[2].

save_bitmap() produce mapas de bits de 2, 4, 16, o 256 colores y se pueden leer con read_bitmap(). Windows Paintbrush y algunas otras herramientas no soportan mapas de bits de 4 colores.

Ejemplo:
paletteData = get_all_palette() * 4
code = save_bitmap({paletteData, imageData}, "c:\\example\\a1.bmp")
Ver también: save_image, read_bitmap, save_screen, get_all_palette

save_image

Plataforma: DOS32
Sintaxis: include image.e
s3 = save_image(s1, s2)
Descripción:
Guarda una imagen rectangular desde una pantalla de gráficos de píxel. El resultado es una secuencia 2D de secuencias, conteniendo todos los píxeles de la imagen. Puede volver a mostrar la imagen con display_image(). 's1' es una secuencia de 2 elementos {x1, y1} que especifica el píxel superior izquierdo de la imagen. 's2' es una secuencia {x2,y2} que especifica el pìxel inferior derecho.
Ejemplo:
s = save_image({0,0}, {50,50})
display_image({100,200}, s)
display_image({300,400}, s)
-- guarda una imagen cuadrada de 51x51, entonces vuelve a mostrarla en 
-- {100,200} y en {300,400}
Ver también: display_image, save_text_image

save_screen

Plataforma: DOS32
Sintaxis: include image.e
i = save_screen(x1, st)
Descripción:
Guarda la pantalla entera o una región rectangular de ella como un fichero de mapa de bits de (.bmp). Para guardar la pantalla entera, pase el entero 0 a 'x1'. PAra guardar una región rectangular de pantalla, 'x1' deberá ser una secuencia de 2 secuencias: {{topLeftXPixel, topLeftYPixel}, {bottomRightXPixel, bottomRightYPixel}}

'st' es el nombre del fichero de mapa de bits .bmp.

El resultado será uno de los siguientes códigos:

    global constant BMP_SUCCESS = 0,
                BMP_OPEN_FAILED = 1,
               BMP_INVALID_MODE = 4 -- modo gráfico o argumento inválido
Comentarios:
save_screen() produce mapas de bits de 2, 4, 16, o 256 colores y se pueden leer con read_bitmap(). Windows Paintbrush y algunas otras herramientas no soportan mapas de bits de 4 colores.

save_screen() solo trabaja en los modos de gráficos de píxel, no en los modos de texto.

Ejemplo 1:
-- guarda la pantalla entera:
code = save_screen(0, "c:\\example\\a1.bmp")
Ejemplo 2:
-- guarda una parte de la pantalla:
err = save_screen({{0,0},{200, 15}}, "b1.bmp")
Ver también: save_image, read_bitmap, save_bitmap

save_text_image

Plataforma: DOS32, Linux, FreeBSD
Sintaxis: include image.e
s3 = save_text_image(s1, s2)
Descripción:
Guarda una región rectangular de texto de una pantalla de modo de texto. El resultado es una secuencia de secuencias conteniendo caracteres ASCII y atributos de la pantalla. Puede volver a mostrar este texto usando display_text_image(). 's1' es una secuencia de 2 elementos {línea1, columna1} que especifica el caracter superior izquierdo. 's2' es una secuencia {línea2, columna2} que especifica el caracter inferior derecho.
Comentarios:
Debido a que los atributos del caracter también se guardan, obtendrá el correcto color del texto, color de fondo y otras propiedades para cada caracter cuando vuelva a mostrar el texto.

En DOS32, un byte de atributo está formado por 2 campos de 4 bits que codifican los colores de frente y fondo del caracter. Los 4 bits de orden superior determinan el color de fondo, mientras los 4 bits de orden inferior determinan el color del texto.

Esta rutina solamente funciona en los modos de texto.

Puede ser que utilice esta función en una interfaz gráfica del usuario de modo de texto para guardar una porción de la pantalla antes de exhibir un menú desplegable, una caja de diálogo, una caja de alerta, etc.

En DOS32, si usted pasando las páginas de video, observe que esta función lee en la página activa actual.

Ejemplo: Si las 2 líneas superiores de la pantalla tienen:
   Hola
   Mundo
Y ejecuta:
s = save_text_image({1,1}, {2,5})
Entonces 's' es algo como:
    {"H-o-l-a-", "M-u-n-d-o-"}
donde '-' indica los bytes de atributos
Ver también: display_text_image, save_image, set_active_page, get_screen_char

scroll

Sintaxis: include graphics.e
scroll(i1, i2, i3)
Descripción:
Desplaza una región de texto en la pantalla, tanto hacia arriba ('i1' positivo) o hacia abajo ('i1' negativo) por 'i1' líneas. La región es la serie de líneas de pantalla desde 'i2' (línea superior) a 'i3' (línea inferior) inclusive. Aparecerán nuevas líneas en blanco por encima o por debajo.
Comentarios:
Podría ejecutar la operación de desplazamiento usando una serie de llamadas a puts(), pero scroll() es mucho más rápido. La posición del cursor después del desplazamiento no está definida.
Programa de ejemplo: bin\ed.ex
Ver también: clear_screen, text_rows

seek

Sintaxis: include file.e
i1 = seek(fn, i2)
Descripción:
Busca (mueve) cualquier posición de byte en el fichero 'fn', o al final del fichero si 'i2' es -1. Para cada fichero abierto hay una posición actual de byte que se actualiza como resultado de las operaciones de E/S en el fichero. La posición inicial en el fichero es 0 para ficheros abiertos para lectura, escritura o actualización. La posición inicial es el fin del fichero para los ficheros abiertos para agregar (append). El valor devuelto por seek() es 0 si la búsqueda fue exitosa, y no cero si falló. Es posible que seek() se pase de la marca de fin de fichero. Si busca más allá del fin de un fichero, y escribe algún dato, los bytes indefinidos se insertarán en la brecha entre el fin de fichero original y los nuevos datos.
Comentarios:
Después de buscar y leer (o escribir) una serie de bytes, puede necesitar llamar a seek() explícitamente antes de cambiar a escribir (o leer) bytes, aunque la posición del fichero debe ya ser la que usted desea.

Esta función se usa normalmente con ficheros abiertos en modo binario. En el modo de texto, DOS convierte los CR LF a LF al leer, y LF a CR LF al guardar, lo cuál puede causar la gran confusión cuando usted está intentando contar los bytes.

Ejemplo:
include file.e

integer fn
fn = open("midata", "rb")
-- leer y muestra la primera línea del archivo 3 veces:
for i = 1 to 3 do
    puts(1, gets(fn))
    if seek(fn, 0) then
        puts(1, "el rebobinado falló!\n")
    end if
end for
Ver también: where, open

sequence

Sintaxis: i = sequence(x)
Descripción: Devuelve 1 si 'x' es una secuencia, en caso contrario devuelve 0.
Comentarios:
Sirve para definir el tipo secuencia (sequence). También puede llamarla como una función ordinalria para determinar si un objeto es una secuencia.
Ejemplo 1:
sequence s
s = {1,2,3}
Ejemplo 2:
if sequence(x) then
    sum = 0
    for i = 1 to length(x) do
        sum = sum + x[i]
    end for
else
    -- x tiene que ser un átomo
    sum = x
end if
Ver también: atom, object, integer, atoms and sequences

set_active_page

Plataforma: DOS32
Sintaxis: include image.e
set_active_page(i)
Descripción: Selecciona la página de video 'i' para enviarla a pantalla.
Comentarios:
Con páginas múltiples puede cambiar instantáneamente la pantalla entera sin causar ningún "parpadeo visible". También puede guardar la pantalla y traerla detrás rápidamente.

video_config() le dirá cuántas páginas están disponibles en el modo de gráficos actual.

Por defecto, la página activa y la página mostrada son ambas 0.

Esto trabaja bajo DOS, o en una ventana de pantalla completa del DOS. En una ventana de pantalla parcial usted no puede cambiar la página activa.

Ejemplo:
include image.e

-- las páginas activa & mostrada son ambas inicialmente 0
puts(1, "\nEsto es la página 0\n")
set_active_page(1)     -- la salida de pantalla ahora irá a paginar 1
clear_screen()
puts(1, "\nAhora hemos cambiado a la página 1\n")
if getc(0) then        -- wait for key-press
end if
set_display_page(1)    -- "Ahora hemos ..." se hace visible
if getc(0) then        -- espera la presión de una tecla
end if
set_display_page(0)    -- "Esto es ..." se hace visible otra vez
set_active_page(0)
Ver también: get_active_page, set_display_page, video_config

set_display_page

Plataforma: DOS32
Sintaxis: include image.e
set_display_page(i)
Descripción: Selecciona la página de video 'i' para mapearla en la pantalla visible.
Comentarios:
Con páginas múltiples puede cambiar instantáneamente la pantalla entera sin causar ningún "parpadeo visible". También puede guardar la pantalla y traerla detrás rápidamente.

video_config() le dirá cuántas páginas están disponibles en el modo de gráficos actual.

Por defecto, la página activa y la página mostrada son ambas 0.

Esto trabaja bajo DOS, o en una ventana de pantalla completa del DOS. En una ventana de pantalla parcial usted no puede cambiar la página activa.

Ejemplo: Ver el ejemplo de set_active_page().
Ver también: get_display_page, set_active_page, video_config

set_rand

Sintaxis: include machine.e
set_rand(i1)
Descripción:
Establece el generador de números aleatorios en el estado 'i1', de modo que usted consiga una serie conocida de números al azar en llamadas subsecuentes a rand().
Comentarios:
Normalmente los números devueltos por la función rand() son toalmente impredecibles, y serán diferentes cada vez que se ejecute el programa. A veces, sin embargo, puede desear repetir la misma serie de números, quizás porque está tratando de depurar el programa, o tal vez la capacidad de generar la misma salida (por ejemplo, una imagen al azar) por pedido del usuario.
Ejemplo:
sequence s, t
s = repeat(0, 3)
t = s

set_rand(12345)
s[1] = rand(10)
s[2] = rand(100)
s[3] = rand(1000)

set_rand(12345)  -- el mismo valor para set_rand()
t[1] = rand(10)  -- los mismos argumentos para rand() como antes
t[2] = rand(100)
t[3] = rand(1000)
-- en este punto, 's' y 't' serán idénticos
Ver también: rand

set_vector

Plataforma: DOS32
Sintaxis: include machine.e
set_vector(i, s)
Descripción:
Establece a 's' como la nueva dirección para el manejo de la interrupción número 'i'. 's' tiene que ser una dirección lejana (far) de modo protegido de la forma: {segmento de 16 bits, offset de 32 bits}.
Comentarios:
Antes de llamar a set_vector(), tiene que guardar la rutina de manejo de interrupciones de código de máquina en la posición 's' de memoria.

El segmento de 16 bits puede ser el segmento de código usado por Euphoria. Para obtener el valor de este segmento, vea demo\dos32\hardint.ex. El offset puede ser el valor de 32 bits devuelto por allocate(). Euphoria corre en modo protegido con el segmento de código y el segmento de datos apuntando a la misma memoria física, pero con diferentes modos de acceso.

Las interrupciones que ocurren tanto en modo real como en modo protegido se pasarán a su manejador. Su manejador de interrupciones debería cargar inmediatamente el segmento de datos correcto antes de intentar referenciar la memoria.

Su manejador tednría que regresar de la interrupción usando la instrucción iretd, o saltar al manejador de interrupciones original. Este debería guardar y restablecer cualquier registro que se modifique.

Debería bloquear la memoria usada por su manejador, para asegurar que no ocurra un intercambio. Ver lock_memory().

Es altamente recomendable que estudie demo\dos32\hardint.ex antes de intentar inicializar su propio manejador.

Antes de intentar escribir su propio manejador, debería tener un buen conocimiento de programación a nivel de máquina.

Puede llamar a set_vector() con la dirección lejana (far) devuelta por get_vector(), cuando quiera restablecer el manejador original.

Ejemplo:
set_vector(#1C, {code_segment, my_handler_address})
Programa de ejemplo: demo\dos32\hardint.ex
Ver también: get_vector, lock_memory, allocate

sin

Sintaxis: x2 = sin(x1)
Descripción: Devuelve el seno de 'x1', donde 'x1' está expresado en radianes.
Comentarios: Esta función se puede aplicar a un átomo o a todos los elementos de una secuencia
Ejemplo:
sin_x = sin({.5, .9, .11})
-- sin_x es {.479, .783, .110}

Ver también: cos, tan

sleep

Sintaxis: include misc.e
sleep(i)
Descripción: Suspende la ejecución por 'i' segundos.
Comentarios:
En WIN32 y Linux/FreeBSD, el sistema operativo suspenderá su proceso y programa otros procesos. En DOS32, su programa entrará en un ciclo "ocupado" por 'i' segundos, tiempo durante el cual otros procesos pueden ejecutarse, pero competirán con el suyo por el uso de la CPU.
Ejemplo:
puts(1, "Esperando 15 segundos...\n")
sleep(15)
puts(1, "Listo.\n")
Ver también: lock_file, abort, time

sort

Sintaxis: include sort.e
s2 = sort(s1)
Descripción:
Ordena 's1' en orden ascendente, usando un algoritmo rápido de ordenamiento. Los elementos de 's1' pueden ser una mezcla de átomos y secuencias. Los átomos vendrán antes que las secuencias, y éstas se ordenarán "alfabéticamente", donde los primeros elementos son más significativos que los últimos.
Ejemplo 1:
x = 0 & sort({7,5,3,8}) & 0
-- x se establece a {0, 3, 5, 7, 8, 0}
Ejemplo 2:
y = sort({"Tenorio", "Juan", "Don", 5.5, 4, 6})
-- y es {4, 5.5, 6, "Don", "Juan", "Tenorio"}
Ejemplo 3:
database = sort({{"Smith",   95.0, 29},
                 {"Jones",   77.2, 31},
                 {"Clinton", 88.7, 44}})

-- Los 3 "registros" se ordenarán por el primer "campo"
-- es decir, por nombre. Si el primer campo (elemento) es igual
-- se ordenará por el segundo, etc.

-- después de ordenar, database es:
               {{"Clinton", 88.7, 44},
                {"Jones",   77.2, 31},
                {"Smith",   95.0, 29}}
Ver también: custom_sort, compare, match, find

sound

Plataforma: DOS32
Sintaxis: include graphics.e
sound(i)
Descripción: Ejecuta un sonido de frecuencia 'i' en el parlante de la PC. Si 'i' vale 0, el parlante se desconecta.
Comentarios: En WIN32 y Linux/FreeBSD no generará sonido alguno.
Ejemplo:
sound(1000) -- ejecuta un sonido agudo

sprint

Sintaxis: include misc.e
s = sprint(x)
Descripción:
Devuelve la representación de 'x' como cadena de caracteres. Es exactamente lo mismo que print(fn, x), excepto que la salida se devuelve como una secuencia de caracteres, en lugar de enviarla a un fichero o dispositivo. 'x' puede ser cualquier objeto Euphoria.
Comentarios:
Los átomos contenidos dentro de 'x' se mostrarán con un máximo de 10 dígitos significativos, igual que con print().
Ejemplo 1:
s = sprint(12345)
-- s es "12345"

Ejemplo 2:
s = sprint({10,20,30}+5)
-- s es "{15,25,35}"

Ver también: print, sprintf, value, get

sprintf

Sintaxis: s = sprintf(st, x)
Descripción:
Es exactamente lo mismo que printf(), excepto que la salida se devuelve como una secuencia de caracteres, en lugar de enviarse a un fichero o dispositivo. 'st' es una cadena de formato, 'x' es el valor o secuencia de valores a formatearse. printf(fn, st, x) es equivalente a puts(fn, sprintf(st, x)).
Comentarios: Algunos usos comunes de sprintf() son:

1. Convertir números en cadenas.
2. Crear cadenas para pasárselas a system().
3. Crear mensajes de error que se pueden pasar a un manejador general de errores.

Ejemplo:
s = sprintf("%08d", 12345)
-- s es "00012345"
Ver también: printf, value, sprint, get, system

sqrt

Sintaxis: x2 = sqrt(x1)
Descripción: Calcula la raíz cuadrada de 'x1'.
Comentarios:
Está función se puede aplicar a un átomo o a todos los elementos de una secuencia. Si toma la raíz cuadrada de un número negativo, el programa se abortará con un mensaje de error en tiempo de ejecución.
Ejemplo:
r = sqrt(16)
-- r es 4
Ver también: log, power

system

Sintaxis: system(st, i)
Descripción:
Pasa una cadena de comando 'st' al intérprete de comandos del sistema operativo. El argumento 'i' indica la forma en que se regresará de la llamada a system():

i = 0, se restablece el modo gráfico previo y se limpia la pantalla.

i = 1, sonará un bip y el programa esperará que el usuario presione una tecla antes que se restablezca el modo gráfico previo.

i = 2, ni se restablece el modo gráfico, ni se limpia la pantalla.

Comentarios:
i = 2 solamente debería usarse cuando se conoce que el comando ejecutado por system() no cambiará el modo gráfico.

Puede usar a Euphoria como un lenguaje por lotes sofisticado (.bat), haciendo llamadas a system() y system_exec().

system() iniciará un nuevo shell en DOS o Linux/FreeBSD.

system() le permite usar redirección de la línea de comandos de las entrada y salida estándares en la cadena de comando 'st'.

Bajo DOS32, un programa Euphoria comenzará con memoria extendida. Si se agota la memoria extendida, el programa consumirá memoria convencional. Si se agota la memoria convencional, el programa usarámemoria virtual, es decir, espacio de intercambio en disco. El comando DOS ejecutado por system() fallará si no hay suficiente memoria convencional disponible. Para evitar esta situación, puede reservar algo de memoria convencional (baja), escribiendo:

    SET CAUSEWAY=LOWMEM:xxx
donde xxx es la cantidad de Kb de memoria convencional a reservar. Escriba esto antes de correr su programa. También puede ponerlo en el fichero autoexec.bat, o en un fichero .bat que ejecute su programa. Por ejemplo:
    SET CAUSEWAY=LOWMEM:80
    ex miprog.ex
Esto reservará 80K de memoria convencional, que debería ser suficiente para ejecutar comandos simples de DOS como COPY, MOVE, MKDIR, etc.
Ejemplo 1:
system("copy temp.txt a:\\temp.bak", 2)
-- se usa la doble barra en una cadena literal para obtener
-- una barra simple
Ejemplo 2:
system("ex \\test\\miprog.ex < indata > outdata", 2)
-- ejecuta miprog redireccionando la entrada y salida estándares
Programa de ejemplo: bin\install.ex
Ver también: system_exec, dir, current_dir, getenv, command_line

system_exec

Sintaxis: i1 = system_exec(st, i2)
Descripción:
Intenta ejecutar el comando dado por 'st'. 'st' tiene que ser un comando para correr un programa ejecutable, posiblemente con algunos argumentos en su línea de comandos. Si el programa se puede ejecutar, 'i1' tendrá el código de salida del programa. Si no es posible ejecutarlo, system_exec() devolverá -1. 'i2' es un código que indica que hacer con el modo gráfico cuando termina system_exec(). Estos códigos son los mismos que para system():

i2 = 0, se restablece el modo gráfico previo y se limpia la pantalla.

i2 = 1, sonará un bip y el programa esperará que el usuario presione una tecla antes que se restablezca el modo gráfico previo.

i2 = 2, ni se restablece el modo gráfico, ni se limpia la pantalla.

Comentarios:
En DOS32 o WIN32, system_exec() solamente ejecutará programas .exe y .com. PAra ejecutar ficheros .bat, o comandos internos de DOS, necesitará a system(). Algunos comandos, tales como DEL, no son programas, sino realmente comandos internos del intérprete de comandos.

En DOS32 y WIN32, system_exec() no permite usar la redirección de la línea de comandos en la cadena de comando 'st'.

Los códigos de salida de programas DOS o Windows normalmente están en el rango de 0 a 255, donde 0 indica "éxito".

Puede ejecutar un programa Euphoria usando system_exec(). Un programa Euphoria puede devolver un código de salida mediante abort().

system_exec() no inicia un nuevo shell de DOS.

Ejemplo 1:
integer exit_code
exit_code = system_exec("xcopy temp1.dat temp2.dat", 2)

if exit_code = -1 then
    puts(2, "\n no se puede correr xcopy.exe\n")
elsif exit_code = 0 then
    puts(2, "\n ejecución exitosa de xcopy\n")
else
    printf(2, "\n xcopy falló con código %d\n", exit_code)
end if
Ejemplo 2:
-- ejecuta miprog con dos nombres de ficheros como argumentos
if system_exec("ex \\test\\miprog.ex indata outdata", 2) then
    puts(2, "falla!\n")
end if
Ver también: system, abort

tan

Sintaxis: x2 = tan(x1)
Descripción: Devuelve la tangente de 'x1', donde 'x1' está en radianes.
Comentarios: Esta función se puede aplicar a un átomo o a todos los elementos de una secuencia.
Ejemplo:
t = tan(1.0)
-- t es 1.55741
Ver también: sin, cos, arctan

text_color

Sintaxis: include graphics.e
text_color(i)
Descripción:
Establece el color del texto. Agregue 16 para obtener texto parpadeante en algunos modos. Ver la lista de los colores posibles en graphics.e.
Comentarios: El texto que imprime después de llamar a text_color(), tendrá el color deseado.

Cuando termina su programa, el último color elegido e impreso, será el que quede activo en pantalla. Así, puede tener que imprimir algo, tal vez solamente '\n', en WHITE para restaurar el texto blanco, especialmente si está en la última línea de la pantalla, listo a desplzarla hacia arriba.

Ejemplo:
text_color(BRIGHT_BLUE)
Ver también: bk_color

text_rows

Plataforma: DOS32, WIN32
Sintaxis: include graphics.e
i2 = text_rows(i1)
Descripción:
Establece la cantidad de líneas en una pantalla de modo de texto al valor de 'i1' si es posible. 'i2' se establecerá a la nueva cantidad real de líneas.
Comentarios: En la mayoría de las tarjetas de video se soportan valores de 25, 28, 43 y 50 líneas.
Ver también: graphics_mode

tick_rate

Plataforma: DOS32
Sintaxis: include machine.e
tick_rate(a)
Descripción:
Especifica la cantidad de interrupciones por pulsos del reloj por segundo. Esto determina la precisión de la rutina de librería time(). También afecta la tasa de muestreo del análisis de perfiles por tiempo.
Comentarios:
tick_rate() se ignora en WIN32 y Linux/FreeBSD. La resolución de la hora en WIN32 es siempre 100 pulsos/segundo.

En la PC, las interrupciones por pulsos del reloj ocurren normalmente a 18.2 interrupciones por segundo. tick_rate() le permite incrementar esa tasa, pero no decrementarla.

tick_rate(0) restaurará la tasa al valor normal de 18.2. Euphoria también restaurará la tasa automáticamente cuando exista, aún cuando encuentre un error en su programa.

Si un programa corre en una ventana DOS window with a tick rate other than 18.2, the time() function will not advance unless the window is the active window.

Mientras ex.exe se está ejecutando, el sistema mantendrá la hora del día en forma correcta. Sin embargo, si ex.exe se aborta (por ejemplo, ve un error "CauseWay...") mientras la tasa de pulsos es alta, usted (o el usuario) puede necesitar reiniciar la máquina para restaurar la tasa adecuada. Si no lo hace, el sistema puede avanzar demasiado rápido. Este problema no ocurrirá en Windows 95/98/NT, solamente en DOS o Windows 3.1. Siempre deberá corregir la hora del día del reloj operado con baterías, cuando inicie su sistema nuevamente.

Ejemplo:
tick_rate(100)
-- time() avanzará en pasos de .01 segundos
-- en lugar de los usuales .055 segundos
Ver también: time, time profiling

time

Sintaxis: a = time()
Descripción: Devuelve la cantidad de segundos transcurridos desde algún punto fijo en el pasado.
Comentarios:
Tome la diferencia entre dos lecturas de time() para medir, por ejemplo, cuanto tarda una sección de código en ejecutarse.

La resolución con DOS32 es normalmente de 0.05 segundos. En WIN32 y Linux/FreeBSD la resolución es de 0.01 segundos.

Bajo DOS32 puede mejorar la resolución llamando a tick_rate().

Bajo DOS32 el período de tiempo que puede medir está limitado a 24 horas. Después de ese tiempo, el valor devuelto por time() se restablecerá e iniciará nuevamente.

Ejemplo:
constant ITERATIONS = 1000000
integer p
atom t0, loop_overhead

t0 = time()
for i = 1 to ITERATIONS do
    -- mide un ciclo vacío
end for
loop_overhead = time() - t0

t0 = time()
for i = 1 to ITERATIONS do
    p = power(2, 20)
end for
? (time() - t0 - loop_overhead)/ITERATIONS
-- calcula el tiempo (en segundos) para una llamada a power()
Ver también: date, tick_rate

trace

Sintaxis: with trace
trace(i)
Descripción:
Si 'i' es 1 o 2, se activa la sentencia de pantalla interactiva trazado/depuración. Si 'i' es 3, se activa el trazado de sentencias hacia el fichero ctrace.out. Si 'i' es 0, se desactiva el trazado. Cuando 'i' vale 1, aparece una pantalla en color. Cuando 'i' vale 2, la pantalla de trazado es monocromática. El trazado sólo puede ocurrir en rutinas compiladas con "with trace", y trace() no tendrá efecto, salvo que esté dentro de una sección "with trace" del programa.

Para leer una discusión completa acerca de trazado / depuración, vea Parte I - 3.1 Depuración.

Comentarios: Use trace(2) si la pantalla en colores es difícil de ver en su sistema.

trace(3) está soportado solamente en la Edición Completa del Traductor Euphoria a C. El Traductor no soporta el trazado interactivo.

El intérprete de Dominio Público soporta todas las variantes de trace(), pero solamente para programas de hasta 300 sentencias en total. Para programas más grandes se necesitará la Edición Completa del intérprete.

Ejemplo:
if x < 0 then
    -- ok, aquí es donde quiero depurar...
    trace(1)
    -- etc.
    ...
end if

Ver también: profile, depuración y análisis de perfiles de ejecución

 

... continua
 
A a B   |   C a D   |   E a G   |   H a O   |   P a R   |   S a T   |   U a Z