Saludos. En esta ocasion tengo un archivo que contiene datos, tales como
numeros, fechas y bytes. Desarrolle el siguiente codigo para leer esta
informaicon:
Dim TheBytes() As Byte
Dim strNombre As String = ""
Dim bytHeader(3) As Byte
Dim bytByte As Byte
Dim lngTimeStamp As Integer
Dim bytExtra(1) As Byte
Dim intFH As Integer
On Error GoTo ehUncompressFile
intFH = FreeFile()
FileOpen(intFH, strArchivoDatos, OpenMode.Binary)
FileGet(intFH, (bytHeader))
If bytHeader(0) = 225 And bytHeader(1) = 179 Then
'Consigue la fecha y hora (num de segundos desde fecha en 1970).
FileGet(intFH, lngTimeStamp)
'Lee otros 2 bytes.
FileGet(intFH, (bytExtra))
If (bytHeader(3) And 16) = 16 Then
'Consigue el nombre.
Do
FileGet(intFH, bytByte)
If bytByte > 0 Then
strNombre = strNombre & Chr(bytByte)
End If
Loop Until bytByte = 0
End If
ReDim TheBytes(CInt(LOF(intFH) - 1))
FileGet(intFH, (TheBytes))
Basicamente, leo una cabecaera de 4 bytes, reviso que la "llave" sea la
correcta en los primeros dos bytes. Si lo es, consigo 4 bytes que tienen
una fecha y hora y otros dos byte, luego si el 5o bit del cuarto byte esta
puesto (-1) entonces consigo un nombre. Por fin el leo resto de los datos
a un arreglo (The Bytes)
Esta rutina la converti de otra en VB6 y estaba probada y funcionando
bien, solo que hoy que regrese a hacer algunas pruebas finales me
encuentro que no esta funcoinando. La primera instruccion de lectura
que lee los 4 bytes al arreglo byeCabecera() solo lee ceros. Ya revise
el archivo y efectivamente estan ahi los primeros 4 bytes tal como los
espero. No se porque ahora esta leyendo ceros. Cualquier orientacion
es bienvenida, o bien un metodo alterno mas confiable para poder
realizar la equivalente funcion. Gracias, Saga
Leer las respuestas