RE:visualizar archivos .dbx
Public Sub LeerMensajes(ByVal lngOffsetIh As Long)
Dim i As Long, j As Long, k As Long, Ih As TIndexHeader, ii As TIndexItem, hd As THeaderData
Dim flg As TFlag, lngTotalFlags As Long, lngOffset As Long, msg As mensaje, lngOffsetIi As Long
Dim p As Long
While lngOffsetIh
Ih = LeerIndexHeader(lngOffsetIh)
For i = 0 To SHR(Ih.Count, 8) - 1
lngOffsetIi = lngOffsetIh + LenB(Ih) + (i * 12) '12 = LenB(ii)
While lngOffsetIi
ii = LeerIndexItem(lngOffsetIi)
hd = LeerHeaderData(ii.HeaderPos)
lngTotalFlags = hd.FlagCount And &HFF
For j = 0 To lngTotalFlags - 1
flg = LeerFlag(ii.HeaderPos + 12 + (j * 4)) '12 = LenB(ii)
lngOffset = ii.HeaderPos + 12 + (lngTotalFlags * 4) + flg.Value '12 = LenB(ii)
Select Case flg.Id
Case &H1: msg.lngEstado = LeerLong(lngOffset)
Case &H2: msg.fchEnviado = LeerFecha(lngOffset)
Case &H7: msg.strIdMensaje = LeerCadena(lngOffset)
Case &H8: msg.strAsunto = LeerCadena(lngOffset)
Case &HA: msg.strReferencias = LeerCadena(lngOffset)
Case &HB: msg.strGruposDeNoticias = LeerCadena(lngOffset)
Case &HD: msg.strDe = LeerCadena(lngOffset)
Case &HE: msg.strEMail = LeerCadena(lngOffset)
Case &H12: msg.fchRecibido = LeerFecha(lngOffset)
Case &H13: msg.strReceptor = LeerCadena(lngOffset)
Case &H14: msg.strDireccionReceptor = LeerCadena(lngOffset)
Case &H1A: msg.strCuenta = LeerCadena(lngOffset)
Case &H1B: msg.strIdCuenta = LeerCadena(lngOffset)
'Case &H80: msg.Id = flg.Value
Case &H84: msg.strContenido = LeerContenido(flg.Value)
Case &H91: msg.lngTamaño = flg.Value
End Select
Next j
k = k + 1
ReDim Preserve arrMSG(1 To k)
arrMSG(k).lngEstado = msg.lngEstado
arrMSG(k).fchEnviado = msg.fchEnviado
arrMSG(k).strIdMensaje = msg.strIdMensaje
arrMSG(k).strAsunto = msg.strAsunto
arrMSG(k).strReferencias = msg.strReferencias
arrMSG(k).strGruposDeNoticias = msg.strGruposDeNoticias
arrMSG(k).strDe = msg.strDe
arrMSG(k).strEMail = msg.strEMail
arrMSG(k).fchRecibido = msg.fchRecibido
arrMSG(k).strReceptor = msg.strReceptor
arrMSG(k).strDireccionReceptor = msg.strDireccionReceptor
arrMSG(k).strCuenta = msg.strCuenta
arrMSG(k).strIdCuenta = msg.strIdCuenta
arrMSG(k).strContenido = msg.strContenido
arrMSG(k).lngTamaño = msg.lngTamaño
lngOffsetIi = ii.ChildIndex
Wend
Next i
CalcularProximoOffsetIh Ih, lngOffsetIh
'Debug.Print m_colMensajes.Count
Wend
Set arrLeidos = Nothing
p = UBound(arrMSG) 'no se necesita, es para las comprobaciones
End Sub