Visual Basic Avanzado - Función VB
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.
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 Ayuda bd access SendKeys "{tab}" no andó.. |