kra eu to pior q vc, vc ainda conseuio capturar e gravar e eu que ainda nem isso consegui, estou usando o SDK da NitGen, e os exemplos que vem com ele sao muito confuso e o pior os kras nao colocam nada parecido com nossa realidade e muito engraçado, dai ta fodis!! To procurando uma luz na net pra ver se encontro um exemplo descente! flw
Bit --- Em delphi-br@yahoogrupos.com.br, "Rafael Jorge" <[EMAIL PROTECTED]> escreveu > > estou desenvolvendo um sistema de que captura a digital por um leitor > biometrico usando o Griaule Fingerprint SDK 2007. > pensei ter concluido tudo mas percebi que hora ele diz certo de quem é a > digital hora ele da erro hora ele nao acha ninquem.. e do nada ele da acess > violation.. > to usando as sequintes rotinas pra cadastrar.. > > procedure TRafaelFingerPrinter.Matricular; > var > id : string; > i : integer; > tptstream : tmemorystream; > handle : hbitmap; > hdc : longint; > begin > if self.FDataset.Active = false > then showmessage('Tabela onde vai ser quardada as digitais nao esta ativa') > else begin > if ExtractTemplate > 0 then > begin > self.Fdisplay.Picture.Bitmap.FreeImage; > handle := self.Fdisplay.Picture.Bitmap.ReleaseHandle; > DeleteObject(handle); > {$iFOPT R+} > {$DEFINE CKRANGE} > {$R-} > {$ENDIF} > hdc := GetDC(hwnd(nil)); > {Finger.BiometricDisplay(template.tpt, > raw.img, > raw.width, > raw.height, > raw.Res, > hdc, > handle, > GR_NO_CONTEXT);} > > if handle <> 0 then > begin > self.display.Picture.Bitmap.Handle := handle; > self.display.Repaint; > end; > > ReleaseDC(hwnd(nil), hdc); > {$IFDEF CKRANGE} > {$UNDEF CKRANGE} > {$R+} > {$ENDIF} > end; > //gravando > if (((template.size > 0) and (template.tpt <> nil))) then > begin > self.FDataset.Edit; > tptstream := tmemorystream.create(); > tptstream.Write(template.tpt^, template.size); > (self.Dataset.FieldByName(self.campo) as > TBlobField).LoadFromStream(tptstream); > tptstream.free; > end; > end; > end; > > > e to usando esta rotina para verificar a digital passada depois de capturar. > > > function TRafaelFingerPrinter.Identificar: boolean; > var > encontrou : string; > tmp : string; > score : integer; > i : integer; > cdc : tclientdataset; > ultimo : string; > begin > encontrou := 'N'; > if extracttemplate() >= 0 then > begin > self.Finger.IdentifyPrepare(template.tpt, GR_DEFAULT_CONTEXT); > //abrindo banco de dados > cdc := criaclientdataset('select '+self.Fcampo+', '+self.FCanpo_codigo+#13+ > 'from '+self.FNomeTabela+#13+ > 'where not '+self.FCampo+' is null', > self.FConexao, > ultimo, > CTtquery); > cdc.first; > while not cdc.eof do > begin > tmp := cdc.fieldbyname(self.fcampo).asstring; > template.size := length(tmp); > move(pchar(tmp)^, template.tpt^, template.size); > if template.size > 0 then > begin > if self.Finger.Identify(template.tpt,score,GR_DEFAULT_CONTEXT) = gr_match > then > begin > encontrou := 'S'; > self.IDObtido := cdc.fieldbyname(self.FCanpo_codigo).asstring; > break; > end; > end; > cdc.next; > end; > cdc.free; > if encontrou = 'N' > then showmessage('Digital não encontrada'); > end; > end; > > to com pressa de resolver isso e nao to vendo solucao. > o exemplo deles é muito confuso, eu tentei usar firebird no exemplo deles e > deu a mesma coisa so mudei a forma de gravar os dados e verificar, e fica > dando a mesma coisa. nao auterei mas nada no exemplo.. > > alquem ai ja desenvolveu algo pra isso? pq nao sei mas o que fazer... > o prazo ta vencendo e eu nao sei como solucionar isso.. > obrigdao. > t+ > > -- > ------------------------------------------------------------------- > Rafael jorge alves (Analista/desenvolvedor) > > www.sistemafocus.com.br > sistema focus de gestão comercial e serviços em informatica. > ------------------------------------------------------------------- > > > [As partes desta mensagem que não continham texto foram removidas] >