unlock_file
Sintaxis: |
include file.e
unlock_file(fn, s) |
Descripción: |
Desbloquea el archivo 'fn' abierto, o una parte
de él. Tiene que haber sido bloqueado previamente usando
lock_file().
En DOS32 y WIN32 se puede desbloquear un rango de bytes dentro de
un archivo al especificar el parámetro 's' como {first_byte,
last_byte}. El mismo rango de bytes tiene que haber sido bloqueado
previamente por una llamada a lock_file().
En Linux/FreeBSD solamente se puede bloquear y desbloquear un archivo
completo. Para desbloquear un archivo completo, el parámtro
's' debería ser {}. En Linux/FreeBSD, 's' siempre tiene que
ser {}. |
Comentarios: |
Debería desbloquear el archivo tan pronto como sea posible,
para que otros procesos puedan usarlo. |
|
Cualquier archivo bloqueado, se desbloqueará automáticamente
cuando el programa termine. |
|
Ver lock_file()
por comentarios adicionales y un ejemplo. |
Ver también: |
lock_file
|
unregister_block
Sintaxis: |
include machine.e (or safe.e)
unregister_block(a) |
Descripción: |
Quita un bloque de memoria de la lista de bloques
seguros mantenida por safe.e
(la versión de depuración de machine.e).
El bloque comienza en la dirección 'a'. |
Comentarios: |
Esta rutina solamente tiene sentido con propósitos
de depuración. Usela para desregistrar bloques de memoria
que previamente hayan sido registrados con register_block().
Al desregistrar un bloque, se lo quita de la lista de bloques seguros
mantenida por safe.e. Esto evita
que el programa realice lecturas o escrituras adicionales de memoria
dentro de un bloque. |
|
Ver register_block()
por comentarios adicionales y un ejemplo. |
Ver también: |
register_block,
safe.e |
upper
Sintaxis: |
include wildcard.e
x2 = upper(x1) |
Descripción: |
Convierte un átomo o secuencia a mayúsculas. |
Example: |
|
|
s = upper("Euphoria")
-- s es"EUPHORIA"
a = upper('g')
-- a es 'G'
s = upper({"Euphoria", "Programación"})
-- s es {"EUPHORIA", "PROGRAMACIÓN"}
|
Ver también: |
lower
|
use_vesa
Platform: |
DOS32 |
Sintaxis: |
include machine.e
use_vesa(i) |
Descripción: |
use_vesa(1)
forzará a Euphoria a usar los gráficos estándar
VESA. Esto puede provocar que los programas Euphoria trabajen mejor
en los modos gráficos SVGA con ciertas tarjetas de video.
use_vesa(0) restablecerá
el modo original en que Euphoria usaba la tarjeta de video. |
Comentarios: |
La mayoría de la gente puede ignorar
esto.Sin embargo, si experimenta alguna dificultad en los modos
gráficos de SVGA debería probar llamando a use_vesa(1)
al comienzo del programa, antes de cualquier llamada
a graphics_mode().
No se deberían usar otros argumentos para
use_vesa() que no
sean 0 y 1. |
Example: |
|
|
use_vesa(1)
fail = graphics_mode(261)
|
Ver también: |
graphics_mode
|
value
Sintaxis: |
include get.e
s = value(st) |
Descripción: |
Lee la cadena de representación de un
objeto Euphoria, y computa el valor de ese objeto. Devuelve una
secuencia de 2 elementos, {error_status, value}, donde error_status
puede ser: |
|
GET_SUCCESS -- se encontró una representación válida de un opbjeto
GET_EOF -- fin de la cadena alcanzado demasiado pronto
GET_FAIL -- la sintaxis es errónea |
Comentarios: |
Esta función trabaja igual que get(),
pero lee desde una cadena que puede suministrarle, en lugar de un
archivo o dispositivo.
Después de leer una representación
válida de un objeto Euphoria, value()
dejará de leer e ignorará cualquier otro caracter
de la cadena. Por ejemplo: "36" y "36P" le darán ambos {GET_SUCCESS,
36}. |
Ejemplo 1: |
|
|
s = value("12345"}
-- s es {GET_SUCCESS, 12345}
|
Ejemplo 2: |
|
|
s = value("{0, 1, -99.9}")
-- s es {GET_SUCCESS, {0, 1, -99.9}}
|
Ejemplo 3: |
|
|
s = value("+++")
-- s es {GET_FAIL, 0}
|
Ver también: |
get,
sprintf,
print
|
video_config
Platform: |
DOS32, Linux, FreeBSD |
Sintaxis: |
include graphics.e
s = video_config() |
Descripción: |
Devuelve una secuencia de valores describiendo
la configuración actual de video:
{monitor color?, modo gráfico, filas de texto, columnas de
texto, píxeles x, píxeles y, cantidad de colores,
cantidad de páginas}
Las siguientes constantes están definidas en graphics.e:
|
|
global constant VC_COLOR = 1,
VC_MODE = 2,
VC_LINES = 3,
VC_COLUMNS = 4,
VC_XPIXELS = 5,
VC_YPIXELS = 6,
VC_NCOLORS = 7,
VC_PAGES = 8
|
Comentarios: |
Esta rutina le hace fácil parametrizar un programa, porque
trabaja con diferentes modos gráficos.
En la PC hay dos tipos de modos gráficos.
El primer tipo, modo texto, que le
permite imprimir solamente texto. El segundo tipo, modo
gráficos de píxel, que le permite dibujar píxeles,
o puntos, en varios colores, tanto como texto. Puede decir que está
en modo texto, cuando los campos VC_XPIXELS
y VC_YPIXELS valgan 0. Las rutinas de librería tales como
polygon(),
draw_line(),
y ellipse()
solamente trabajan en modo gráfico
de píxel. |
Example: |
|
|
vc = video_config() -- en modo 3 con 25 líneas de texto:
-- vc es {1, 3, 25, 80, 0, 0, 32, 8}
|
Ver también: |
graphics_mode
|
wait_key
Sintaxis: |
include get.e
i = wait_key() |
Descripción: |
Devuelve la próxima tecla presionada por el usuario. No devuelve
nada hasta que se presiona una tecla. |
Comentarios: |
Podría obtener el mismo resultado usando get_key()
de este modo: |
|
while 1 do
k = get_key()
if k != -1 then
exit
end if
end while
|
|
Sin embargo, en sistemas multitarea como Windows
o Linux/FreeBSD, este "ocupado"
tendería a hacer más lento el sistema. wait_key()
le permite al sistema operativo hacer otras tareas, mientras el
programa espera que el usuario presione una tecla.
También podría usar getc(0),
asumiendo que el número de archivo 0 es la entrada desde
el teclado, excepto que no podría levantar los códigos
especiales de teclas de función, teclas de flecha, etc. |
Ver también: |
get_key,
getc
|
walk_dir
Sintaxis: |
include file.e
i1 = walk_dir(st, i2, i3) |
Descripción: |
Esta rutina "caminará" a través
de un directorio cuya ruta esté dada por 'st'. 'i2' es el
routine id de una rutina que
se suministra. walk_dir()
llamará a su rutina una vez por cada archivo y subdirectorio
de 'st'. Si 'i3' no es cero (VERDADERO), entonces los subdirectorios
de 'st' serán "caminados" recursivamente.
La rutina que se suministra debería aceptar
la ruta y dir
entry() por cada archivo y subdirectorio. Esta
rutina debería devolver 0 para continuar la ejecución
de walk_dir(), o no
cero para detenerlo. |
Comentarios: |
Este mecanismo le permite escribir una función
simple que gestiona un archivo por vez, mientras walk_dir()
se encarga del proceso de caminar a través de los archivos
y los subdirectorios.
Por defecto, los archivos y subdirectorios serán
visitados en orden alfabético. Para usar un orden diferente,
establecer el entero global my_dir al routine
id de su función dir()
modificada que ordena las entradas del directorio de forma
distinta. Ver la función dir()
por defecto en file.e. |
Example: |
|
|
function look_at(sequence path_name, sequence entry)
-- esta función acepta dos secuencias como argumentos
printf(1, "%s\\%s: %d\n",
{path_name, entry[D_NAME], entry[D_SIZE]})
return 0 -- continuar el recorrido
end function
exit_code = walk_dir("C:\\MYFILES", routine_id("look_at"), TRUE)
|
Programa de ejemplo: |
euphoria\bin\search.ex |
Ver también: |
dir,
current_dir
|
where
Sintaxis: |
include file.e
i = where(fn) |
Descripción: |
Esta función devuelve la posición
del byte actual en el archivo 'fn'. Esta posición se actualiza
leyendo, escribiendo o buscando en el archivo. Su valor indica la
posición del próximo byte en el archivo, en donde
se leerá o escribirá. |
Ver también: |
seek,
open
|
wildcard_file
Sintaxis: |
include wildcard.e
i = wildcard_file(st1, st2) |
Descripción: |
Devuelve 1 (verdadero) si el nombre del archivo
'st2' coincide con el patrón 'st1'. Devuelve 0 (falso) en
caso contrario. Esto es similar a la coincidencia de patrones de
DOS, pero mejor en algunos casos. * significa 0 o más caracteres,
? significa un solo caracter. En Linux y FreeBSD las comparaciones
de caracteres son sensibles a la mayúscula; en DOS y Windows
no lo son. |
Comentarios: |
Tiene que usar esta función para verificar
la salida de la rutina dir()
para los nombres de archivos que coincidan con el patrón
suministrado por el usuario del programa.
En DOS "*ABC.*" coincidirá con todos
los archivos. wildcard_file("*ABC.*",
s) solamente coincidirá cuando la parte final
del nombre del archivo contenga "ABC" (como se esperaría).
|
Ejemplo 1: |
|
|
i = wildcard_file("AB*CD.?", "aB123cD.e")
-- i se establece a 1 en DOS o Windows, 0 en Linux o FreeBSD
|
Ejemplo 2: |
|
|
i = wildcard_file("AB*CD.?", "abcd.ex")
-- i se establece a 0 en todos los sistemas,
-- debido a que la extensión del archivo tiene 2 letras en lugar de 1
|
Programa de ejemplo: |
bin\search.ex |
Ver también: |
wildcard_match,
dir
|
wildcard_match
Sintaxis: |
include wildcard.e
i = wildcard_match(st1, st2) |
Descripción: |
Esta función realiza la búsqueda
general de una cadena contra un patrón que contiene los símbolos
* y ? Devuelve 1 (verdadero) si la cadena 'st2' coincide con el
patrón 'st1'. Devuelve 0 (falso) en caso contrario. * significa
0 o más caracteres. ? siginifica un solo caracter. La comparación
de caracteres es sensible a la mayúscula. |
Comentarios: |
Si desea hacer comparaciones que no tengan
en cuenta mayúsculas y minúsculas, debe convertir
'st1' y 'st2' a mayúsculas con upper(),
o a minúsculas con lower()
antes de llamar a wildcard_match().
Si quiere detectar un patrón en cualquier
lugar dentro de una cadena, agregue * a cada extremo del patrón:
|
|
i = wildcard_match('*' & pattern & '*', string)
|
|
No hay forma de tratar literalmente a * o ? en un patrón. |
Ejemplo 1: |
|
|
i = wildcard_match("A?B*", "AQBXXYY")
-- i es 1 (VERDADERO)
|
Ejemplo 2: |
|
|
i = wildcard_match("*xyz*", "AAAbbbxyz")
-- i es 1 (VERDADERO)
|
Ejemplo 3: |
|
|
i = wildcard_match("A*B*C", "a111b222c")
-- i es 0 (FALSO) porque no coinciden las mayúsculas con las minúsculas
|
Programa de ejemplo: |
bin\search.ex |
Ver también: |
wildcard_file,
match,
upper,
lower,
compare
|
wrap
Sintaxis: |
include graphics.e
wrap(i) |
Descripción: |
Le permite al texto enrollarse alrededor del margen derecho (i = 1) o
truncarse (i = 0). |
Comentarios: |
Por defecto, es texto estará enrollado.
Use wrap()
en modos de texto o modos
gráficos de píxel cuando se muestren largas
líneas de texto. |
Ejemplo: |
|
|
puts(1, repeat('x', 100) & "\n\n")
-- ahora tiene una línea de 80 'x' siguiendo a una línea de 20 'x' más
wrap(0)
puts(1, repeat('x', 100) & "\n\n")
-- crea solo una línea de 80 'x'
|
Ver también: |
puts,
position
|
xor_bits
Sintaxis: |
x3 = xor_bits(x1, x2) |
Descripción: |
Realiza la operación lógica XOR (O exclusivo) sobre
los correspondientes bits en 'x1' y 'x2'. El bit 'x3' será
1 cuando uno de los dos bits en 'x1' o 'x2' sea 1 y el otro sea 0.
|
Comentarios: |
Los argumentos tiene que ser representables como números
de 32 bits, con o sin signo.
Si intenta manejar valores de 32 bits (completos),
debería declarar las variables como átomos,
en lugar de declararlas como enteros. El tipo entero de Euphoria
está limitado a 31 bits.
Los resultados se tratan como números con
signo. Serán números negativos cuando el bit de mayor
orden sea 1. |
Ejemplo 1: |
|
|
a = xor_bits(#0110, #1010)
-- a es #1100
|
Ver también: |
and_bits,
or_bits,
not_bits,
int_to_bits,
int_to_bytes
|
... continua
A
a B
| C a D | E
a G | H a O |
P a R | S
a T | U a Z
|