AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / WLanguage / Funciones WLanguage / Funciones estándar / Funciones de archivos externos
  • Gestión de errores
  • Modo de funcionamiento en Windows Vista (y posterior)
  • Modo de apertura del archivo
  • Múltiples aperturas del mismo archivo
  • Posición en el fichero
  • Concatenación de varios archivos externos
  • Compatibilidad entre las diferentes versiones de WINDEV/WEBDEV
  • Bloqueo y desbloqueo
  • Gestión de archivos de texto en UNICODE
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Abre un archivo externo (ANSI o UNICODE) para poder manipular Rlo mediante programación. También se puede utilizar la función fLoadText.
Observaciones:
  • Para los archivos externos de texto manipular, se recomienda utilizar fSaveBuffer/fLoadText y fSaveText/fLoadBuffer.
  • Para manipular archivos externos de tipo binario, utilice las funciones fCreate o fOpen.
  • Para abrir y visualizar un archivo externo en el programa associated (para visualizar un archivo .DOC en Word, por ejemplo), utilice ShellExecute.
Reportes y Consultas
// Open an external file
ResOpening = fOpen("C:\MyDirectories\File.txt", foReadWrite)
IF ResOpening <> -1 THEN
...
END
Reportes y Consultas
// Open an external file
MyFile is DiskFile
ResOpening = fOpen("C:\MyDirectories\File.txt", foReadWrite)
IF NOT ErrorOccurred THEN
...
END
Sintaxis
<Result> = fOpen(<File path> [, <Opening mode>])
<Result>: Entero o DiskFile Variable
Corresponde a:
  • un entero:
    • el identificador del fichero externo. Este identificador será utilizado por todas las funciones para manejar los archivos externos.
    • -1 si se produce un error. Para obtener más información sobre el error, utilice la función ErrorInfo con la constante errMessage.
  • una variable de tipo DiskFile. Si se produce un error, la variable ErrorOccurred se pone en True. Para obtener más información sobre el error, utilice la función ErrorInfo con la constante errMessage.
<File path>: Cadena de caracteres
Nombre y ruta completa (o relativa) del archivo (hasta 260 caracteres). Se puede utilizar una ruta UNC.
<Opening mode>: Constante o combinación de constantes opcional
Constantes utilizadas para definir el modo de apertura del archivo, el modo de acceso al archivo y el modo de bloqueo del archivo.
  • Modo de apertura del archivo:
    foAddAbrir el archivo en modo "adición. En el momento de la apertura, la posición actual corresponde al último byte del archivo.
    foCreateCrear el archivo. Si el archivo ya existe (mismo nombre, mismo directorio), este archivo se borra y se vuelve a crear.
    foCreateIfNotExistCrear el archivo sólo si este archivo no existe. La posición actual corresponde al primer byte del archivo.
  • Modo de acceso al archivo. Este tipo es utilizado por fReadLine y fWriteLine para definir el tipo de información a leer y escribir en el archivo externo:
    foAnsiArchivo Ansi. Esta constante se utiliza para gestionar un archivo Ansi cuando se activa el modo "Usar cadenas Unicode en tiempo de ejecución" en la configuración del proyecto.
    Modo utilizado por Default:
    • en los proyectos WINDEV y WEBDEV antes de la versión 17.
    • en las configuraciones de los proyectos WINDEV y WEBDEV que utilizan el modo "Usar cadenas Ansi en tiempo de ejecución" de la versión 17.
    foUnicodeArchivo Unicode. Esta constante permite gestionar archivos Unicode cuando el modo "Utilizar cadenas ANSI en ejecución" está activado en la configuración del proyecto.
    Modo utilizado por Default:
    • en los proyectos de WINDEV Mobile independientemente del modo y versión utilizados.
    • en las configuraciones de los proyectos WINDEV y WEBDEV que utilizan el modo "Usar cadenas Unicode en tiempo de ejecución" de la versión 17.
  • Modo de bloqueo de archivos:
    foAutomaticDeletionEl archivo se bloquea cuando se abre y se elimina automáticamente cuando se cierra (cuando se llama a fClose o cuando se cierra la aplicación).
    Si varias aplicaciones utilizan el archivo, éste se borrará automáticamente cuando la última aplicación lo cierre (cuando se llame a fClose, o al final de la aplicación).

    foReadAbrir el archivo en modo "sólo lectura. Este archivo sólo puede ser leído.
    foReadLockLas otras aplicaciones no pueden leer el fichero actual.
    foReadWrite
    (Valor predeterminado)
    Abrir el archivo en modo "lectura/escritura. Este archivo puede ser leído y modificado (equivalente a foRead+foWrite).
    foWriteAbrir el archivo en modo "sólo escritura. Este archivo sólo puede ser modificado.
    foWriteLockLas otras aplicaciones no pueden modificar el archivo actual.
  • Otras opciones:
    foSequentialAccessOptimiza la gestión de las cachés del archivo especificando a Windows que el archivo se leerá desde el principio hasta el final..
Observaciones

Gestión de errores

La función fOpen genera un error en los siguientes casos:
  • el archivo no existe,
  • el archivo está bloqueado por otro ordenador o por otra aplicación,
  • el usuario no tiene derechos de lectura o escritura sobre el archivo a abrir.
  • se utilizó una cadena Unicode para <File ruta> en un sistema operativo como Windows 98 o Windows Me.
Observación: La apertura en modificación de un archivo encontrado en un disquete protegido contra escritura se ha realizado con éxito.
Reportes y Consultas

Modo de funcionamiento en Windows Vista (y posterior)

Si esta función no funciona correctamente en Windows Vista (y posterior), compruebe si el archivo o directorio utilizado no está en ninguno de los directorios del sistema (directorio de Windows o directorio "Archivos de programa").
En Windows Vista (y posteriores), con el Mecanismo UAC (Cuenta de usuario control) habilitado, debe tener privilegios de administrador para manipular y/o modificar los archivos o directorios en los directorios del sistema (directorio de Windows o directorio "Archivos de programa").
Consejo de programación: A manipular y/o modificar los archivos o directorios sin privilegios de administrador, debería:
  • evite escribir en el directorio de Windows o en el de "Archivos de programa",
  • utilizar el directorio del sistema de la aplicación (devuelto por SysDir con la constante srAppDataCommun, por ejemplo).

Modo de apertura del archivo

En Default, si no se especifica el modo de acceso al archivo, éste se abre según el atributo del archivo (definido en Windows).
Se produce un error si el modo de acceso especificado no corresponde al atributo de archivo.
Un archivo en modo "lectura/escritura" puede abrirse en todos los modos de acceso soportados por fOpen (foWrite, foRead y foReadWrite constantes).
Un archivo en modo "sólo lectura" sólo puede abrirse en modo "sólo lectura" (constante foRead).

Múltiples aperturas del mismo archivo

El mismo archivo se puede abrir varias veces simultáneamente. Cada apertura es associated con un identificador de archivo diferente. Cada versión del archivo debe ser manejada individualmente a través de su propio identificador.

Posición en el fichero

Al abrir un archivo, la posición actual corresponde a:
  • el primer byte de archivo,
  • el último byte del archivo es el archivo está abierto en modo "adición" (constante foAdd).
Esta posición puede ser modificada por fSeek.

Concatenación de varios archivos externos

Para concatenar varios archivos externos, debe hacerlo:
  • abrir el archivo de destino en modo "adición" (constante foAdd),
  • abrir el archivo fuente en modo "solo lectura" (constante foRead o foReadWrite),
  • leer el archivo fuente Line por Line con fReadLine,
  • escribir en el archivo de destino Line por Line con fWriteLine.

Compatibilidad entre las diferentes versiones de WINDEV/WEBDEV

Las constantes foText (apertura en modo texto) y foBinario (apertura en modo binario) ya no son necesarias. Se sustituyen por el valor 0. En este caso, fOpen intenta abrir el archivo en modo lectura/escritura.
Reportes y Consultas

Bloqueo y desbloqueo

Si un archivo está bloqueado al abrirlo (foReadLock o foWriteLock), se desbloqueará automáticamente al cerrarlo (con fClose).
Reportes y Consultas

Gestión de archivos de texto en UNICODE

fOpen se utiliza para leer y escribir archivos de texto en caracteres UNICODE "UTF-16 Little Endian".
La sintaxis:
  • fOpen(<Nombre de archivo>, foRead + foUnicode): se usa para abrir un archivo Unicode. Si la marca "Current Unicode" (FFFE) se encuentra al principio del archivo, se lee automáticamente.
  • fOpen(<Nombre de archivo>, foCreación + foUnicode): se usa para crear un archivo Unicode. La marca "Current Unicode" (FFFE) se añade automáticamente al principio del archivo..
  • fOpen(<Nombre de archivo>, foCreationIfNotFound + foUnicode): se utiliza para crear un fichero UNICODE si este fichero no existe. La marca "Current Unicode" (FFFE) se añade automáticamente al principio del archivo que se está creando.. Si el archivo existe y comienza con la marca "Current Unicode" (FFFE), esta marca se lee automáticamente.
Clasificación Lógica de negocio / UI: Lógica de negocio
Componente: wd290std.dll
Versión mínima requerida
  • Versión 9
Esta página también está disponible para…
Comentarios
Example ReadFile
PROCEDURE ReadFile(ArquivoTxt is string, TipoUnicodeToAnsi is string)

//Le arquivo texto
INFO(TIMESYS())

// Declare the variables
PathFile is string = ArquivoTxt
IdFile, ResCloseFile, FileID, NumeroLinha is int
Line is string

NextTitle("Atencao")

IF fFileExist(ArquivoTxt) = true

// Open the file
FileID = fOpen(PathFile,foReadWrite)
IF IdFile = -1 THEN
Error(ErrorInfo(errMessage))
ELSE

if TipoAnsiUnicode = "UnicodeToAnsi"
//Converte de Unicode para Ansi
Line = UnicodeToAnsi(fReadLine(FileID))
else
Line = fReadLine(FileID)
end

//Linha 1
NumeroLinha = 1
/// ----COLOQUE AQUI O PROGRESS BAR = 1
//Info("Linha:" + NumeroLinha, Line) ///----------------- LINHA LIDA
//Inclua aqui a SUB Procedure de importacao dos dados

WHILE Line <> EOT AND Line <> ""

//Proxima linha
NumeroLinha += 1
/// ----COLOQUE AQUI O PROGRESS BAR + 1
Line = fReadLine(FileID)
//Info("Linha:" + NumeroLinha, Line) ///----------------- LINHA LIDA
//Inclua aqui a SUB Procedure de importacao dos dados
END
IF Line = "" THEN Error(ErrorInfo(errMessage))
IF Line = EOT THEN Info("Final do Arquivo.")
ResCloseFile = fClose(IdFile)
IF ResCloseFile = -1 THEN
//Error(ErrorInfo(errMessage))
END

END

ELSE
Info("Arquivo não encontrado!")
END

info(NumeroLinha,TIMESYS())
adrianoboller
21 02 2015

Última modificación: 26/08/2022

Señalar un error o enviar una sugerencia | Ayuda local