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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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. |
Ejemplo: | |
s = sprintf("%08d", 12345) -- s es "00012345" | |
Ver también: | printf, value, sprint, get, system |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |