Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-02-2014
mordaz mordaz is offline
Miembro
 
Registrado: mar 2008
Posts: 32
Poder: 0
mordaz Va por buen camino
Smile Digital Persona SDK en C++ Builder

Buenos dias,

Estoy tratando de traducir el código de ejemplo del SDK del lector biometrico Digital Persona de un ejemplo de Delphi a C++ Builder, pero no logro hacerlo funcionar correctamente.

El código original es el siguiente:

Código Delphi [-]

procedure TForm1.SaveTemplate();
 var
outFile : File of byte;
vrnt: Variant;
vtByteBuf : PByteArray;
aryLow: integer;
aryHigh : integer;
rawDataSize: integer;
loopIndex : integer;
numWritten : integer;
bt : byte;
iTemplate : DPFPShrXLib_TLB.IDPFPTemplateDisp;
begin

try
if SaveDialog.Execute then
      begin
iTemplate := DPFPEnrollment.Template as DPFPShrXLib_TLB.IDPFPTemplateDisp;
vrnt:=iTemplate.Serialize;  //raw data is now stored in this variant

        //Now that you have the variant, try to get raw byte array
        //We are assuming here that you cannot save a variant directly to database field
        //That you need a byte array before saving the data to the database.
        
        aryLow:=VarArrayLowBound(vrnt,1);
        aryHigh:=varArrayHighBound(vrnt,1);
        aryHigh:=aryHigh-aryLow;

        vtByteBuf:=VarArrayLock(vrnt);  //lock down the array
        AssignFile(outFile,saveDialog.FileName);
        Rewrite(outFile);
        for loopIndex := 0 to aryHigh  do
        begin
               //fpData[loopIndex]:=vtByteBuf[loopIndex];
               //bt:=fpData[loopIndex];
               Write(outFile,vtByteBuf[loopIndex]);  //Save directly to file here
        end;
        VarArrayUnlock(vrnt);
      end;
except
on E: Exception do showmessage('Trouble saving data');
end;
        CloseFile(outFile);


end;

Mi codigo en C++ Builder es el siguiente

Código:
void __fastcall TForm1::btnSaveClick(TObject *Sender)
{
  //Guardando la muestra
  OleVariant Ovt;
  IDispatch &pSample=static_cast<IDispatch&>(*DPFPEnrollment->Template);
  IDPFPSample &Muestra=static_cast<IDPFPSample&>(pSample);
  Muestra.Serialize(Ovt);

  //Guardando en archivo
  int aryLow;
  int aryHigh;
  Variant vrnt;
  vrnt=reinterpret_cast <Variant&> (Ovt);
  aryLow=VarArrayLowBound(vrnt,1);
  aryHigh=VarArrayHighBound(vrnt,1);
  aryHigh=aryHigh-aryLow;
  PByteArray vtByteBuf=(PByteArray)VarArrayLock(vrnt);

  ofstream myfile;
  myfile.open ("muestra.bin", ios::out | ios::app | ios::binary);
  for (int loopIndex=0;loopIndex<=aryHigh;loopIndex++){
     myfile<<vtByteBuf[loopIndex];
  }
  VarArrayUnlock(vrnt);
  myfile.close();
}
El código me genera correctamente el archivo "muestra.bin" pero al compararlo en tamaño con uno generado con Delphi existe una diferencia en tamaño considerable. Lo que me hace suponer que no estoy guardando los datos correctamente.

Gracias por su apoyo.

Última edición por Casimiro Notevi fecha: 08-02-2014 a las 11:38:10.
Responder Con Cita
  #2  
Antiguo 26-03-2014
kbolas kbolas is offline
Registrado
NULL
 
Registrado: mar 2014
Posts: 1
Poder: 0
kbolas Va por buen camino
Cita:
Empezado por mordaz Ver Mensaje
Buenos dias,

Estoy tratando de traducir el código de ejemplo del SDK del lector biometrico Digital Persona de un ejemplo de Delphi a C++ Builder, pero no logro hacerlo funcionar correctamente.

El código original es el siguiente:

Código Delphi [-]

procedure TForm1.SaveTemplate();
 var
outFile : File of byte;
vrnt: Variant;
vtByteBuf : PByteArray;
aryLow: integer;
aryHigh : integer;
rawDataSize: integer;
loopIndex : integer;
numWritten : integer;
bt : byte;
iTemplate : DPFPShrXLib_TLB.IDPFPTemplateDisp;
begin

try
if SaveDialog.Execute then
      begin
iTemplate := DPFPEnrollment.Template as DPFPShrXLib_TLB.IDPFPTemplateDisp;
vrnt:=iTemplate.Serialize;  //raw data is now stored in this variant

        //Now that you have the variant, try to get raw byte array
        //We are assuming here that you cannot save a variant directly to database field
        //That you need a byte array before saving the data to the database.
        
        aryLow:=VarArrayLowBound(vrnt,1);
        aryHigh:=varArrayHighBound(vrnt,1);
        aryHigh:=aryHigh-aryLow;

        vtByteBuf:=VarArrayLock(vrnt);  //lock down the array
        AssignFile(outFile,saveDialog.FileName);
        Rewrite(outFile);
        for loopIndex := 0 to aryHigh  do
        begin
               //fpData[loopIndex]:=vtByteBuf[loopIndex];
               //bt:=fpData[loopIndex];
               Write(outFile,vtByteBuf[loopIndex]);  //Save directly to file here
        end;
        VarArrayUnlock(vrnt);
      end;
except
on E: Exception do showmessage('Trouble saving data');
end;
        CloseFile(outFile);


end;

Mi codigo en C++ Builder es el siguiente

Código:
void __fastcall TForm1::btnSaveClick(TObject *Sender)
{
  //Guardando la muestra
  OleVariant Ovt;
  IDispatch &pSample=static_cast<IDispatch&>(*DPFPEnrollment->Template);
  IDPFPSample &Muestra=static_cast<IDPFPSample&>(pSample);
  Muestra.Serialize(Ovt);

  //Guardando en archivo
  int aryLow;
  int aryHigh;
  Variant vrnt;
  vrnt=reinterpret_cast <Variant&> (Ovt);
  aryLow=VarArrayLowBound(vrnt,1);
  aryHigh=VarArrayHighBound(vrnt,1);
  aryHigh=aryHigh-aryLow;
  PByteArray vtByteBuf=(PByteArray)VarArrayLock(vrnt);

  ofstream myfile;
  myfile.open ("muestra.bin", ios::out | ios::app | ios::binary);
  for (int loopIndex=0;loopIndex<=aryHigh;loopIndex++){
     myfile<<vtByteBuf[loopIndex];
  }
  VarArrayUnlock(vrnt);
  myfile.close();
}
El código me genera correctamente el archivo "muestra.bin" pero al compararlo en tamaño con uno generado con Delphi existe una diferencia en tamaño considerable. Lo que me hace suponer que no estoy guardando los datos correctamente.

Gracias por su apoyo.
Hola, buenas tardes, sabes que tengo el mismo problema en c++ builder, y no logro hacerlo funcionar. solo me agrega 2 controles de OCX, pero no puedo crear ningun tipo de variable( ej. *DPFPEnrollment->) para utilizar el lector, los controles funciona, si corro la aplicacion, el programa me pide que capture la huella 4 veces, y al termino me dice que todo esta bien, pero no puedo recuperar los datos de la huella que se utilizo, supongo que es por el sdk que no se me registra bien. Estoy usando C++ Builder 4. Alguna sugerencia?

Gracias de Antemano
Responder Con Cita
  #3  
Antiguo 07-05-2014
mordaz mordaz is offline
Miembro
 
Registrado: mar 2008
Posts: 32
Poder: 0
mordaz Va por buen camino
Cita:
Hola, buenas tardes, sabes que tengo el mismo problema en c++ builder, y no logro hacerlo funcionar. solo me agrega 2 controles de OCX, pero no puedo crear ningun tipo de variable( ej. *DPFPEnrollment->) para utilizar el lector, los controles funciona, si corro la aplicacion, el programa me pide que capture la huella 4 veces, y al termino me dice que todo esta bien, pero no puedo recuperar los datos de la huella que se utilizo, supongo que es por el sdk que no se me registra bien. Estoy usando C++ Builder 4. Alguna sugerencia?
Que tal, acabo de retomar el tema espero que aun sea de ayuda, debes instalar los componentes ActiveX, adjunto el paquete que compile para C++ Builder 6, espero se de tu ayuda.

En cuanto al tema de guardar la huella en un archivo, lo resolví guardándolo directamente en una base de datos Interbase.
Archivos Adjuntos
Tipo de Archivo: rar DigitalPersona Package ++Builder 6.rar (7,0 KB, 82 visitas)
Responder Con Cita
  #4  
Antiguo 05-01-2018
arturoio arturoio is offline
Miembro
NULL
 
Registrado: oct 2017
Posts: 17
Poder: 0
arturoio Va por buen camino
Hola que tal
Justo ahora estoy en esta misma situación, tengo la documentación en mano y he instalado el SDK de Digital Persona, pero no logro enternder cual es el procedimiento para trabajar con el lector.
Te agradecería mucho si me puedes orientar un poco
Responder Con Cita
  #5  
Antiguo 28-08-2021
kagua77 kagua77 is offline
Miembro
 
Registrado: abr 2008
Posts: 26
Poder: 0
kagua77 Va por buen camino
Cita:
Empezado por mordaz Ver Mensaje
Que tal, acabo de retomar el tema espero que aun sea de ayuda, debes instalar los componentes ActiveX, adjunto el paquete que compile para C++ Builder 6, espero se de tu ayuda.

En cuanto al tema de guardar la huella en un archivo, lo resolví guardándolo directamente en una base de datos Interbase.
que tal mordaz, quisiera saber si es posible pudieras ayudar con la implementacion del lector de huella digital(digitalpersonal) y ponernos en contacto.

de antemano, gracias
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Integrar Lector de Huellas [u.are.u 4000b] Digital Persona martini002 Varios 5 26-02-2014 21:42:42
¡Cuidado!, esta persona te lee la mente. Casimiro Notevi La Taberna 1 25-09-2012 16:40:37
Buscando a una persona de Bogotá Al González La Taberna 8 20-02-2009 21:57:26
abogado y una buena persona? marcoszorrilla Humor 1 17-01-2007 03:01:22
Calcular la edad execta de una persona Jorge Taveras SQL 2 13-02-2005 06:25:30


La franja horaria es GMT +2. Ahora son las 22:17:29.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi