Artículo

Verificación de Archivos Tipo Texto

Autor / Fuente

Harvey Triana

Tema

Programación General en Visual Basic

Actualización

Septiembre 20 de 1997

Descripción

Determina si un archivo es binario o de texto. Visual Basic 4.0 y superiores.


Verificación de Archivos Tipo Texto

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.

'------------------------------------------------------
' Determina si un archivo es binario o de texto
'------------------------------------------------------
Public Function IsBinaryFile(File As String) As Boolean
    
    Const aLf = 10, aCR = 13, aSP = 32
    Const MaxRead = 2 ^ 15 - 1
    
    Dim ff  As Integer
    Dim s   As Integer
    Dim i   As Integer
    Dim n   As Integer
    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 >= aSP Then
              Else
              If s = aCR Or s = aLf Then
              Else
                 IsBinaryFile = True
                 Rtn = True
              End If
           End If
        End If
    Loop Until Rtn
    Close ff
    Exit Function
    
IsBinaryFile_Err:
    If ff Then Close ff
    MsgBox "Error verifying file " & File & vbCrLf & Err.Description
    
End Function

Simplemente pase el nombre del archivo al argumento y la función retornata un valor boleano. Por ejemplo MsgBox "¿ Es binario Command.Com ? ... " & IsBinaryFile("C:\Command.Com")


NOTAS

  • Access Read da mayor velocidad a la lectura.
  • Espera que el nombre del 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. El procedimiento aquí expuesto emplea otra técnica.


Harvey Triana Envíe sus comentarios a: psoft@latino.net.co
Derechos libres de reutilización solo para programación.