Griaule Biometrics

Home » Forums » FINGERPRINT SDK » Delphi Specific » ERRO Oleaut32.dll VERIFY
5 replies [Last post]
www.inf
Offline
Joined: 2008-10-20
Rate this post:
0
No votes yet
ERRO Oleaut32.dll VERIFY

Bom dia!

Estou desenvolvendo uma aplicação utilizando Delphi 7 e o Kit SDK do site da Griaule.

Utilizei os exemplos que estão no KIT como base, e fiz algumas adaptações para "rodar" em MYSQL 5.0. O programa funciona bem, captura a imagem da digital e salva o template no banco, mas quando vou usar a função de verificação da digital (VERIFY) aparece uma mensagem de erro dizendo "ACCESS VIOLATION AT ADDRESS 765FEB1A IN MODULO OLEAUT32.DLL".

Fiz o teste usando o Windows Vista e o XP, tambem registrei a DLL para ver se tinha algum problema, mas mesmo assim não funcionou.

Alguem poderia me ajudar?!

Abraços

ptrckph
Offline
Joined: 2008-09-23
Rate this post:
0
No votes yet

pedromac
A função verify retorna um código erro, seria legal se você nos pasasse esse código de erro. Se você postar o seu trecho de código que faz a verificação, também ajuda.

www.inf
Offline
Joined: 2008-10-20
Rate this post:
0
No votes yet

Olá, o que percebo é que vai executar a função "function Verify" que está no arquivo uUTil.pas, no ponto em que ele executa o trecho abaixo:

"Verify:=formacesso.GrFingerXCtrl1.Verify(template.tpt, tptRef.tpt, score, GR_DEFAULT_CONTEXT);"

Ai, neste ponto dá o erro indicado "ACCESS VIOLATION AT ADDRESS 765FEB1A IN MODULO OLEAUT32.DLL", percebo que o erro e indicado na OLEAUT32.DLL, mas não sei que procedimento tomar.

Ai esta o trecho:

// Check current fingerprint against another one in our database
function Verify(ID: Integer; var score: Integer): Integer;
Var
tptRef: TTemplate;
Begin
// Checking if template is valid.
if not(TemplateIsValid()) then
begin
Verify:=ERR_INVALID_TEMPLATE;
exit;
end;
// Getting template with the supplied ID from the database.

tptRef:=DB.getTemplate(id);

if ((tptRef.tpt = nil) or (tptRef.size <= 0)) then
begin
Verify := ERR_INVALID_ID;
exit;
end;
// Comparing templates.
Verify:=formacesso.GrFingerXCtrl1.Verify(template.tpt, tptRef.tpt, score, GR_DEFAULT_CONTEXT);

end;

www.inf
Offline
Joined: 2008-10-20
Rate this post:
0
No votes yet

Como ainda não tive nenhum retorno, realizando diversos testes no fonte consegui diminuir as possibilidades de erro.

ACREDITO QUE O PRINCIPAL ERRO ESTA NA DIGITAL SALVA NO BANCO.

Quando eu carrego a variavel "tptRef.tpt" com as informações salvas no banco de dados (MYSQL) e passo na função:

Verify:=formacesso.GrFingerXCtrl1.Verify(template.tpt, tptRef.tpt, score, GR_DEFAULT_CONTEXT);

Ai apresenta o erro da "OleAut32.dll" mas se eu passar o "template.tpt" comparando com o próprio "template.tpt" (VERIFICAÇÃO BURRA) ai a função funciona!??!!!

Sendo assim pude concluir que:

1.º A Função Verify esta funcionando;
2.º Existe algum erro no procedimento que realiza o salvamento da digital no banco. Acredito que o formato carregado na variavel tptRef.tpt (vinda do banco) não e suportado pelo função Verify?!

Observando os exemplos em Delphi do SDK observei que os metodos de salvamento da digital nos dois projetos (GRFINGERSAMPLEDELPHI e GRFINFERXSAMPLEDELPHI) estão diferentes!?!!! Na função "function TDBClass.addTemplate" da uDBClass:

GRFINFERXSAMPLEDELPHI:
tptStream := TMemoryStream.Create();
// write template data to memory stream.
SafeArrayAccessData(template.tpt, Pointer(p));
tptStream.write(p^, template.size);
SafeArrayUnaccessData(template.tpt);

GRFINGERSAMPLEDELPHI:
tptStream := TMemoryStream.Create();
// write template data to memory stream.
tptStream.write(template.tpt^, template.size);
// save template data from memory stream to database.

Existe algum erro ai?

Vocês teriam algum exemplo de como salvar a digital no MYSQL..., o campo deve ser realmente BLOB?! (BLOB, MEDIUMBLOB OU LONG BLOB)

Fico no Aguardo NOVAMENTE.

ptrckph
Offline
Joined: 2008-09-23
Rate this post:
0
No votes yet

pedromac, nessa parte de código que você postou não tem nenhum erro, mas se tiver alguma byte se quer errado no banco de dados o programa vai cair mesmo. As vezes por engano as pessoas salvam imagem da digital por exemplo, o que causa o bug, não seria esse o caso?
O mysql funciona com o tipo blob sim, verifique esses pontos por gentileza.

patriqu1
Offline
Joined: 2009-06-26
Rate this post:
0
No votes yet

bom dia,
Estou com um dúvida de como visualizar os templates armazenados no banco em forma de imagem
Obrigado!