![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Biometrics U2U DigitalPersona, D6, Firebird; RESUELTO!
OK, Lo resolvi con ayuda de varios. Graciasa ellos. Como resulto tan dificil, aca va mi experiencia de Registro y Verificacion... Suerte!
Para usuarios UrU DigitalPersona usando D6 & Firebird: Registro de Huella (FingerPrint) Procedure TfrmRegisterFingerPrint.FPRegisterTemplate1done(Sender: TObject; var pTemplate: OleVariant); var l_val : OleVariant; l_pArray : PSafeArray; i : integer; fpBuffer : PByteArray; MS : TMemoryStream; begin pTemplate.Export(l_val); l_pArray := PSafeArray(TVarData(l_val).VArray); blobSize := l_pArray.rgsabound[0].cElements * l_pArray.cbElements; fpBuffer := VarArrayLock(l_val); for i := 0 to blobSize - 1 do fpData[i] := fpBuffer[i]; // pvData is byte array VarArrayUnlock(l_val); mode := 0; MS := TMemoryStream.Create; { creates stream } MS.WriteBuffer(fpData, blobsize); { writes stream } try t_users.filtered := false; // TIBTable t_users.filter := 'userid = ' + inttostr(gUserid); // the useer ID to assign the fingerprint t_users.filtered := true; t_usersopen; t_users.edit; TBlobField(t_users.fieldbyname('FingerPrint')).LoadFromStream(MS); // gets from stream t_servers.post; DMLogOn.IBTransac.commit; except DMLogOn.IBTransac.Rollback; end; t_users.close; MS.free; end; {==============================================================================} Verifying Huella (FingerPrint) Procedure TfrmLogOn.FPGetTemplate1done(Sender: TObject; var pTemplate: OleVariant); var i : integer; pErr : AIErrors; begin i := GetFingerID(pTemplate); // returns UserId if i <> 0 then begin bbOKClick(nil); // gets in whatever... end else if (gUsesFingerPrint) then begin // indicator that system can use fingerprint system finger_image.Picture := nil; // cleans fingerprint image FPGetTemplate1.Run(1,pErr); // runs again if fingerprint not found or until manual input... end; end; {==============================================================================} Function TfrmLogOn.GetFingerID(pTemplate : OleVariant): Integer; var m_verifyOk : WordBool; m_score : OleVariant; m_security : AISecureModeMask; m_threshold : OleVariant; m_learning : WordBool; m_tUnknown : IUnknown; c_IVerify : ifPVerify; c_regTemplate : ifPTemplate; ST : TMemoryStream; ExistingTemplate: OleVariant; iCounter: Integer; begin m_learning := False; m_verifyOk := False; m_tUnknown := CreateComObject(CLASS_FPVerify); m_tUnknown.QueryInterface(IID_ifPVerify,c_IVerify); qrefresh(@q_users); // select userid, fingerprint from users..... ST := TMemoryStream.Create; Try While NOT q_users.EOF do begin ST.Clear; TBlobField(q_users.FieldByName('FingerPrint')).SaveToStream(ST); // blob field from DB and store in memory stream ExistingTemplate := MemoryStreamToOleVariant(ST); // convert to olevariant m_tUnknown := CreateComObject(CLASS_FPTemplate); m_tUnknown.QueryInterface(IID_ifPTemplate,c_RegTemplate); c_regTemplate.Import(ExistingTemplate); c_IVerify.Compare(c_RegTemplate, pTemplate, m_verifyOk, m_score, m_threshold, m_learning, m_security); if m_verifyOk Then begin Result := q_users.FieldByName('userid').AsInteger; // returns user ID VarClear(ExistingTemplate); Exit; end; VarClear(ExistingTemplate); c_regTemplate := nil; q_users.Next; // reads next user end; Finally; ST.Free; VarClear(pTemplate); if c_regTemplate <> nil Then c_regTemplate := nil; c_IVerify := nil; end; end; {==============================================================================} |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Campo Blob | IVAND | SQL | 4 | 09-01-2012 11:57:45 |
| Campo BLOB | Loviedo | Oracle | 1 | 05-05-2006 10:36:31 |
| campo blob | acertij022 | Conexión con bases de datos | 1 | 19-08-2004 00:10:32 |
| OleVariant a blob | AngelMarvin | Oracle | 0 | 27-07-2004 23:28:59 |
|