Verificación de Archivos Tipo Texto

 

Colaboración de Harvey Triana
Actualizado el 24/Jul/97


La necesidad de esta función nace de la siguiente situación. Algunas herramientas de ingeniería, generan archivos ASCII o de Texto como fuente de datos de salida. El propósito es que software comercial o corporativo pueda leer, graficar o interpretar los datos. Normalmente este tipo de software importa estos datos a un sistema binario de acceso directo o a un Database. Estos archivos tienen extensiones personalizadas y por lo tanto debemos evaluar si son o no binarios antes de intentar procesarlos. Valga aclarar que el tamaño de estos archivo frecuentemente alcanza los 10 Megabytes y algunos son formato texto de Unix.

Pues bien, la función que les presento a continuación hace esta tarea efectivamente. Doy crédito a David Garza Marín, quien me dio la idea básica del programa.

Public Function IsBinaryFile(File As String) As Boolean
    
    Const aLf = 10, aCR = 13, aSP = 32
    Const MaxRead = 65536
    
    Dim ff  As Integer
    Dim s   As Integer
    Dim i   As Long
    Dim n   As Long
    Dim Rtn As Boolean
    
    On Error GoTo IsBinaryFile_Err
    
    ff = FreeFile
    Open File For Binary Access Read As #ff
    n = IIf(LOF(ff) > MaxRead, MaxRead - 1, LOF(ff))
    Do
        i = i + 1
        If i >= n Then
           IsBinaryFile = False
           Rtn = True
        Else
           s = Asc(Input$(1, #ff))
           If s 


NOTAS

  • La función se escribio para VB 4.0 o superior
  • Access Read da mayor velocidad a la lectura.
  • Espera que el archivo exista y su ruta sea correcta
  • La verificación del carácter Eod (26) tiene inconvenientes. Se debe abrir el archivo como secuencial, lo cual no es viable por desconocer el formato del archivo, a parte de que los archivo grandes pueden generar problemas. Personalmente intente verificando el carácter 26, apertura binaria, y el procedimiento fallo en varios archivos.
  • Si se va a trabajar con archivos de texto grandes es conveniente colocar el Hourglass y un mensaje de espera

Cualquier inquietud puedes comunicarte a [email protected] Atentamente, Harvey Triana


ir al índice