Help Me for converter This Code to Delphi
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