Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Problemas con ocx (https://www.clubdelphi.com/foros/showthread.php?t=84650)

escorpionrojo43 18-11-2013 05:31:46

Problemas con ocx
 
Hola Companerors espero esta vez me puedan ayudar ya que mi ultima pregunta sigue en el aire.
Cuando intento compilar delphi me da este error :
[dcc32 Error] Unit1.pas(40): E2033 Types of actual and formal var parameters must be identical

para detallar mas aqui esta parte del codigo. puse la parte mas simple para partir de ahi.

este es mi codigo
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  lRet: LongWord;
begin
  lRet := vmaxrd1.AbrirPuerto(1);
end;


esta es la funcion que llama declarada en la libreria
Código Delphi [-]
function TVMAXRD.AbrirPuerto(var numPuerto: Smallint): Integer;
begin
  Result := DefaultInterface.AbrirPuerto(numPuerto);
end;

quien me dice lo que esta pasando ahi?

Casimiro Notevi 18-11-2013 10:04:49

Cita:

Empezado por escorpionrojo43 (Mensaje 469684)
[dcc32 Error] Unit1.pas(40): E2033 Types of actual and formal var parameters must be identical

para detallar mas aqui esta parte del codigo. puse la parte mas simple para partir de ahi.

este es mi codigo
Código Delphi [-]procedure TForm1.Button1Click(Sender: TObject); var lRet: LongWord; begin lRet := vmaxrd1.AbrirPuerto(1); end;



esta es la funcion que llama declarada en la libreria
Código Delphi [-]function TVMAXRD.AbrirPuerto(var numPuerto: Smallint): Integer; begin Result := DefaultInterface.AbrirPuerto(numPuerto); end;


quien me dice lo que esta pasando ahi?


Ya lo dice el mensaje del error, los parámetros deben ser del mismo tipo.

escorpionrojo43 18-11-2013 12:41:58

Cita:

Empezado por Casimiro Notevi (Mensaje 469691)
Ya lo dice el mensaje del error, los parámetros deben ser del mismo tipo.

Hola Casimiro el problema persiste ya sea sea la variable lRet del tipo integer, smallint o longword;

ElKurgan 19-11-2013 07:47:56

Fíjate en la definición de TVMAXRD.AbrirPuerto(var numPuerto: Smallint): Integer;

Claramente te dice que es un SmallInt pero que se pasa POR REFERENCIA.

Entonces, esta llamada no te vale:

Código Delphi [-]
var  
  lRet: LongWord;
begin
  lRet := vmaxrd1.AbrirPuerto(1);
end

Prueba a hacerla de este modo, a ver si va:

Código Delphi [-]
var 
  lRet: LongWord;
  NumPuerto: SmallInt;
begin
  NumPuerto := 1;
  lRet := vmaxrd1.AbrirPuerto(NumPuerto);
end

Saludos


La franja horaria es GMT +2. Ahora son las 19:05:55.

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