Ver Mensaje Individual
  #1  
Antiguo 15-03-2011
jjmcira jjmcira is offline
Registrado
NULL
 
Registrado: nov 2010
Posts: 3
Reputación: 0
jjmcira Va por buen camino
Smile Conversion de VB a Delphi

Hola Amigos, soy nuevo en la programaciion delPhi, y tengo que entregar un proyecto de lecturad de logs de unos lectores biometricos, consegui este codigo pero tengo algunos problemas en la parte de conversion, no se si alguien me pudiera ayudar a convertir este a delphi, se los voy a agradecer mucho. gracias de Antemano

Private Const MAX_DATALOGS As Integer = 500
Dim TotalEntries As Integer, numTrans As Integer
Dim Manejador_Memoria As IntPtr = IntPtr.Zero
Dim buffSizeTotal As Integer, buffSize1Trans As Integer, lStatus As Integer
Dim BII_Transaction As cDatalogVF.BII_Transaction_Log_Struct

'checa si la terminal no esta Busy
'1 The MV1200 is busy.
'0 The(MV1200 Is idle)
'2 The MV1200 is cleaning up flash
'Error(<0) An error specified in the error table. See end of chapter for a description.
lStatus = cDatalogVF.BII_Status_MT(HUNIT)
If lStatus <> 0 Then
Return False
End If

' Determina el total de todas las transacciones
TotalEntries = cDatalogVF.BII_Get_Num_Transaction_Log_MT(HUNIT, cDatalogVF.ALL_TRANSACTIONS)
If TotalEntries < 0 Then
Return False
End If

m_NumTransToEvaluate = -1
m_NumTransProcessed = 0

buffSize1Trans = Marshal.SizeOf(BII_Transaction.GetType)
m_Resul = 1
' el while tiene como fin leer por bloques de MAX_DATALOGS todas las transaccines almacenadas
' en el lector e irlas procesando, mientras...
While TotalEntries > 0 And m_Resul > 0 And lStatus = 0
' mientras haya checadas y no se tengan errores
If TotalEntries > MAX_DATALOGS Then
numTrans = MAX_DATALOGS
Else
numTrans = TotalEntries
End If
TotalEntries -= numTrans
Try
' calcula el tamaño de todo el buffer de transacciones a bajar
buffSizeTotal = buffSize1Trans * numTrans
Dim rawData(buffSizeTotal - 1) As Byte
Manejador_Memoria = Marshal.AllocHGlobal(buffSizeTotal)

'checa si la terminal no esta Busy
lStatus = cDatalogVF.BII_Status_MT(HUNIT)
If lStatus = 0 Then
' baja el buffer y las marca como leidas
m_Resul = cDatalogVF.BII_Read_Transaction_Log_MT(HUNIT, cDatalogVF.ALL_TRANSACTIONS, 1, numTrans, Manejador_Memoria)
If m_Resul > 0 Then
' copia el buffer de memoria en un arreglo de bytes
Marshal.Copy(Manejador_Memoria, rawData, 0, buffSizeTotal)
Marshal.FreeHGlobal(Manejador_Memoria)
'por cada una de las transaciones bajadas
For i As Integer = 0 To numTrans - 1
Manejador_Memoria = Marshal.AllocHGlobal(buffSize1Trans)
'toma del arreglo de bytes la porcion correspondiente a la transacciones y lo copia en un buffer de memoria
Marshal.Copy(rawData, i * buffSize1Trans, Manejador_Memoria, buffSize1Trans)
BII_Transaction = CType(Marshal.PtrToStructure(Manejador_Memoria, GetType(cDatalogVF.BII_Transaction_Log_Struct)), cDatalogVF.BII_Transaction_Log_Struct)
'---------------------------------------------------------------------
' registra la transaccion
WriteTransacc(BII_Transaction)
'---------------------------------------------------------------------
Marshal.FreeHGlobal(Manejador_Memoria)
Manejador_Memoria = IntPtr.Zero
Next
Marshal.FreeHGlobal(Manejador_Memoria)
Manejador_Memoria = IntPtr.Zero
End If
End If 'If lStatus = 0 Then
Catch ex As Exception
lStatus = -99 'Error generico
Finally
If Not Manejador_Memoria.Equals(IntPtr.Zero) Then Marshal.FreeHGlobal(Manejador_Memoria)
Manejador_Memoria = IntPtr.Zero
End Try
'checa si la terminal no esta Busy
lStatus = cDatalogVF.BII_Status_MT(HUNIT)
If lStatus = 0 And m_Resul > 0 Then
' borra las transacciones marcadas como ya leidas
m_Resul = cDatalogVF.BII_Erase_Transaction_Log_MT(HUNIT, cDatalogVF.ONLY_READ_TRANSACTIONS, cDatalogVF.ASYNC_MODE)
End If 'If lStatus <> 0 Then
End While
' Una vez obtenidas todas dispara el evento OnDatalogTransactions avisando que ya termino
Responder Con Cita