Hola, agradezco mucho tu respuesta
Te adjunto un poco de código y trato de explicar.
Agradezco infinitamente la ayuda del foro y cualquier tip.
Fernando Castro
México, D.F.
procedure TFrmPrincipal.SpeedButton1Click(Sender: TObject);
VAR
nTotalReg : INTEGER;
nCiclo : INTEGER;
nID : INTEGER;
nIDTrab : INTEGER;
nVal1 : INTEGER;
nVal2 : INTEGER;
dFecha : TDateTime;
cTipo : STRING;
lRetorno : Boolean;
iBFLEX : TBFlex; // esta es la variable ActiveX
begin
iBFlex := TBFlex.Create(SpeedButton1);
lRetorno := iBFlex.OpenCom('COM1',19200);
IF not lRetorno then
begin;
MessageDlg( 'No se ha podido conectar con la lectora' , mtWarning, [mbOK], 0);
iBFlex.Destroy;
exit;
end;
iBFlex.Test(1);
// cuando llamo a este procedimiento sucede algo raro, depuès de compilar
// y obtener datos correctos, el programa dejó de regresarme los
// datos que debería regresarme, es decir, la variable nTotalReg regresó
// algunas veces con el valor de 10 y ahora simplemente regresa con cero,
// cuando debería tener 14
nTotalReg := iBFlex.ReadAllGLogData(1, &nID);
IF nTotalReg = 0 THEN
Begin
MessageDlg( 'La lectora seleccionada no tiene registros grabados' , mtWarning, [mbOK], 0);
iBFlex.CloseCom();
exit;
end;
MessageDlg(IntToStr(nTotalReg) , mtWarning, [mbOK], 0);
FOR nCiclo := 1 TO nTotalreg DO
BEGIN
// igual aqui, dFecha y nVal1 no cambian, y son valores que pasan por
// referencia
lRetorno := iBFlex.GetGeneralLogData(1,nCiclo, &nIDTrab, &dFecha, &nVal1, &nVal2);
IF nVal1 = 1 THEN
cTipo := 'Entrada'
else
cTipo := 'Salida';
MessageDlg('ID: ' + IntToStr(nID) + ';Fecha: ' + DateTimeToStr(dFecha) + ';Tipo: ' + cTipo , mtWarning, [mbOK], 0);
END;
|