Visual Basic - Función VB

Life is soft - evento anual de software empresarial
 
Vista:

Función VB

Publicado por Julio (1 intervención) el 16/07/2012 22:05:11
Hola a todos.

Tengo el siguiente problema en Visual Basic, estoy haciend un OCX, al que le paso y recibo parametros después desde PowerCOBOL.

Dim buffer() As Byte
Dim minData() As Byte
Public Function Capturar_huella(Modelo As Long, Huella_verifiación As String, Huella_capturada As String, ErrorControl As Long, TextoError As String) As Long
FpLibXCapture1.CodeName = Modelo
FpLibXCapture1.DeviceID = -1
FpLibXCapture1.Clear
If FpLibXCapture1.LiveCapture(6000, 50) = True Then
ReDim buffer(FpLibXCapture1.ImageSize) As Byte
If FpLibXCapture1.GetImageData(buffer()) = True Then
ReDim minData(FpLibXCapture1.MinutiaeSize) As Byte
If FpLibXCapture1.GetMinutiaeData(minData()) = True Then
Huella_capturada = StrConv(minData(1), vbUnicode, 1033)
Else
ErrorControl = FpLibXCapture1.ErrorCode
TextoError = FpLibXCapture1.ErrorString
End If
Else
ErrorControl = FpLibXCapture1.ErrorCode
TextoError = FpLibXCapture1.ErrorString
End If
Else
ErrorControl = FpLibXCapture1.ErrorCode
TextoError = FpLibXCapture1.ErrorString
End If
End Function

He descubierto haciendo pruebas, que la variable Byte por cada array guarda 3 caracteres númericos, haciendo la función SrtConv me lo convierte en un caracter string por array, de la manera que lo tengo no me lo hace entero, tendría que ir haciendo uno por uno, habría una función para convertir todo los arrays de la variable minData y llevarlo todo a un String sin array.

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Función VB

Publicado por Lander Cayetano (7 intervenciones) el 13/08/2012 17:01:42
Yo también he pasado por este problema.
Existe una API de Windows que te hace lo que quieres pero tiene unas cuantas pegas.
1. Si, por lo que sea se redimensiona la matriz suele dar problemas, y esos problemas son de en plan "El programa no responde" y solo te queda la opción de finalizar tarea.
2. Consume muchos recursos de Windows y no hay mucha diferencia entre hacerlo tu en una funcion que usando API´s.

Así que sabiendo esto y sabiendo que muchas veces los programas los usan gente que no es programadora y tienen a asustarse al ver fallos de este tipo, en plan "este PC no vale para nada", te recomiendo que uses una función y la pongas en un módulo si la vas a usar bastante.

Sería bastante sencilla:
Function ConvSTR(Datos() as Byte) As String
Dim Resul As String
Dim ID as Long

Resul = ""
For ID = LBound(Datos) tu Ubound(Datos)
Resul = Resul & Chr(Datos(ID))
Next ID

ConvSTR = Resul
End Function

Este código es sencillo, siempre se puede mejorar y si no hay muchos datos en la array te recomiendo que lo hagas recursivamente. Es más complicado pero mejora bastante el proceso de este.

Un saludo, Lander
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar