Histórico da Página
Sintaxis
FREAD( <expresión numérica 1>, @<variable carácter>, <expresión numérica 2> )
Propósito
Lee caracteres de un archivo binario, almacenándolos en una variable de memoria tipo carácter y suministrando el número de bytes leídos.
Argumentos
< expresión numérica >
Define el número de manejo que identifica el archivo que se leerá. Este número se obtiene por medio de las funciones FOPEN() o FCREATE().
< variable carácter>
Define el nombre de una variable carácter existente e iniciada, pasada por referencia por medio del prefijo @, para utilizarla como un buffer de lectura. El tamaño de esta variable debe ser, como mínimo, el mismo definido por la expresión numérica 2. Cada carácter leído a partir del archivo especificado se almacenará en esta variable.
< expresión numérica 2>
Define el número de bytes que se leerán y almacenarán en el buffer, que se inicia en la ubicación actual del puntero de archivos. El valor suministrado por la función FREAD(), cuando la operación de lectura tenga éxito, debe ser igual al valor de la expresión numérica 2. Un valor menor o cero indica que se encontró el final del archivo o simplemente ocurrió algún error de lectura.
Utilización
El FREAD() lee cualquier tipo de carácter contenido en el archivo, incluso caracteres de control, carácter nulo (“”) o caracteres con código ASCII superior al CHR(127).
Para posicionar nuevamente el puntero de archivos binarios sin hacer una lectura, se debe utilizar la función FSEEK().
Sugerencias
Las funciones FREADSTR() y FSEEK() están vinculados a la función FREAD(). La función FREADSTR() lee un determinado número de bytes de un archivo binario hasta que se encuentre el carácter CHR(0). La función FSEEK() sólo mueve el apuntador de archivo, sin efectuar ninguna lectura.
Cuando ocurra un error de lectura del archivo, la función FREAD() suministrará el valor 0. En este caso la función FERROR() se puede utilizar para determinar el tipo de error ocurrido. Por ejemplo, si FREAD() suministra el valor cero y FERROR() suministra el valor 6, significa que el número especificado para identificar el archivo no es válido. Consulte la función FERROR() para verificar la lista de errores.
Ejemplos
El siguiente ejemplo lee un bloque de caracteres con 128 bytes del archivo Teste.txt.
LOCAL nBloco := 128
LOCAL cBuffer := SPACE(512)
LOCAL cArq := FOPEN(“Teste.txt”) // Abre el archivo binario
LOCAL nBytes := 0
IF FERROR <> 0
MsgAlert(“Error al acceder al archivo nº “ + STR(FERROR()))
RETURN
ELSE
nBytes := FREAD(cArq, @cBuffer, nBloco) // Lee los bytes
IF nBytes <> nBloco
MsgAlert(“Error de lectura nº “ + STR(FERROR()))
RETURN
ELSE
MsgAlert(nBytes) // Muestra los bytes leídos
ENDIF
ENDIF