Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ActiveX (https://www.clubdelphi.com/foros/showthread.php?t=31012)

FerCastro 25-04-2006 21:04:44

ActiveX
 
Hola:

Antes que nada un gran saludo a todos, soy nuevo en el foro y comienzo a migrar de xBase (Harbour) a Delphi.

Tengo el siguiente problema: agregué un activex a mi aplicacion y algunos métodos los puedo acceder correctamente, pero en otros, que reciben parámetros por referencia no me devuelve los valores modificados de las variables que meto.

Alguna idea? espero haber sido claro.

Fernando Castro
México, D.F.

Trabajo con D2005

MasterXP 26-04-2006 08:14:03

Pero la has asignado a alguna variable Global??

Si nos pones un ejemplo del Procedimiento entenderemos mejor..

FerCastro 27-04-2006 17:58:25

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;

FerCastro 02-05-2006 20:42:37

Hola de nuevo:

Alguien que me pueda orientar respecto al problema que tengo?

Agradezco mucho

Fer


La franja horaria es GMT +2. Ahora son las 03:31:25.

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