Hola REVINFOR.
Cita:
Empezado por REVINFOR
2) Registro de asistencia, para que el usuario registre la asistencia, el lector de huella captura los datos en un array de bytes y se procede a comparar con las huellas que se tienen guardadas en formato de cadena, solo que para que se puedan comparar ambos datos, cada cadena la tengo que convertir en un array de bytes.
Código Delphi [-]with TUsuarios do
begin
encontrado := false;
close;
open;
while not eof do
begin
if Comparar(bAsistencia, TUsuariosTemplate.asString) then
begin
showmessage('Encuentro exitoso');
encontrado := true;
break;
end;
next;
end;
if not encontrado then
showmessage('Error: Usuario no encontrado');
end;
|
Como te comenté anteriormente y también te señala
mamcx, creo innecesario la reconversión a array of Byte. Una vez obtenida la lectura lo conviertes a cadena y comparas contra la tabla.
Por otro lado la búsqueda secuencial es lenta, voy a reestructurar mi sugerencia anterior para ver si de ese modo me explico mejor.
Código Delphi
[-]
function BytesToString(v: array of byte): string;
const
DIGHEX = '0123456789ABCDEF';
var
i: Integer;
begin
SetLength(Result, Length(v) shl 1);
for i := Low(v) to High(v) do
begin
Result[1+2*i]:= DIGHEX[(v[i] shr 4)+1];
Result[2+2*i]:= DIGHEX[(v[i] and 15)+1];
end;
end;
function TForm1.IsUserFound(const Signature: string): Boolean;
begin
with tuQuery do begin
Close;
SQL.Clear;
SQL.Add('SELECT ID FROM USUARIOS');
SQL.Add('WHERE SIGNATURE = :PSIGNAT');
ParamByName('PSIGNAT').AsString:= Signature;
Open;
Result := not IsEmpty; end;
end;
...
var
Signature: string;
begin
Signature:= BytesToString(array_of_bytes_devuelto_x_el_lector);
if IsUserFound(Signature) then
...
Saludos
Edito: Me olvidaba..., Para el caso específico de ADO:
Código Delphi
[-]
Parameters.ParamByName('PSIGNAT').Value:= Signature