PDA

Ver la Versión Completa : OleVariants


AngelMarvin
20-09-2004, 17:34:47
Hola a todos.
he desarrollado un servidor de aplicaciones el cual utilizo una variable de tipo OleVariant y el el codigo bloqueo esta variable para trabajar con ella (VarArraryLock) y cargarle valores y luego la desbloqueo (VarArrayUnLock) e inmediatamente despues al utilizarla me genera la excepción: 'Variant or safe array is locked.'

Si alguien me puede dar una luz le agradecería muchísimo.

mamcx
20-09-2004, 22:11:04
Muestranos codigo...

AngelMarvin
21-09-2004, 07:27:02
Hola! , gracias por el interés :p.

El programa recibe el codigo biometrico de una huella dactilar (Digital Persona) y otra que recupera de una base de datos.

Aca te muestro un poco del codigo resumido para q se entienda puntualmente:



{*} HuellaBio:= VarArrayCreate([0,616],varByte);
BufferBio:= VarArrayLock(HuellaBio);

/// aca lleno el variante a través del arreglo de bytes.
for Desp:= 0 to 616
do BufferBio[Desp]:= ArregloDactilar[Desp];

VarArrayUnlock(HuellaBio);

{*} HuellaBD:= VarArrayCreate([0,Longitud-1],varByte);
BufferBD:= VarArrayLock(HuellaBD);

/// aca lleno el variante a través del arreglo de bytes.
for Desp:= 0 to 616
do BufferBD[Desp]:= ArregloBD[Desp];

{*} VarArrayUnlock(HuellaBD);

TemplateBD.Import(HuellaBD); /// TemplateBD es un objeto
VarClear(HuellaBD);
TemplateBio.Import(HuelaBio);
VarClear(HuellaBio);

Y acá se produce la excepción: (Verificador es un objeto que provee el sdk del lector)

Verificador.Compare(TemplateBD,TemplateBio,m_verifyOk,m_score,m_threshold,m_learning,m_security);



Por cierto, este codigo corre sobre Win2003.

Pues espero q este claro. Por favor si puedes ayudarme te lo agradecería el resto de mi vida. Esto es lo ultimo que me falta para entregar un sistema y me esta partiendo la cabeza.

mamcx
21-09-2004, 17:55:27
Una soluciona a lo bestia: y si le quitas por completo los VarArrayLock y Unlock? No te debe dar ningun problema prescindir de ellos porque se usan para darle mas desempeño (como en los dataset Disable/EnableControls), pero el tamaño de la matriz y el tipo de datos no lo justifica.... Otra seria COPIAR la matriz a otra matriz y esa pasarla a verificador.