Ver Mensaje Individual
  #1  
Antiguo 12-01-2025
_Io _Io is offline
Miembro
 
Registrado: ene 2024
Posts: 86
Reputación: 2
_Io Va por buen camino
Mandar Datos a Traves de WM

Buenos días.

Estoy intentando mandar información a través de los mensajes de windows. Con un tipo de dato funciona y con otro no.
Os dejo el código.

Este funciona:

Cita:

Código:

function get_Qry_Result_From_wm (aParam :integer):RespuestaConsultaFactuSistemaFacturacionType;
begin

  result:=RespuestaConsultaFactuSistemaFacturacionType(pointer(aParam)^);
  Dispose(pointer(aParam));

end;


function send_Qry_Result_by_wm (aQry :RespuestaConsultaFactuSistemaFacturacionType):integer;
var
  pQry :^RespuestaConsultaFactuSistemaFacturacionType;
begin

  new(pQry);
  pQry^:=aQry;
  result:=integer(pQry)

end;
La primera función recoge el valor de uno de los parámetro de un WM (por ejemplo WParam), en el que se ha dejado la dirección de memoria de la información a enviar.

La segunda función, crea un nuevo objeto y devuelve su dirección de memoria como integer, el cual se utlizará para enviarlo a través de un WM.

Este NO funciona:

Cita:
Código:
function get_Resp_RFs_From_wm (aParam :integer):RespuestaRegFactuSistemaFacturacionType;
begin

  result:=RespuestaRegFactuSistemaFacturacionType(pointer(aParam)^);
  Dispose(pointer(aParam));

end;

function send_Resp_RFs_by_wm (aRF :RespuestaRegFactuSistemaFacturacionType):integer;         // Prepara la respuesta de la AEAT para
var
  pRF :^RespuestaRegFactuSistemaFacturacionType;
begin

  new(pRF);
  pRF^:=aRF;
  result:=integer(aRF)

end;
Da el error de access violation at 0x00....
Si alguien sabe la solución para esto u otra forma de hacerlo, se lo agradecería.

Muchas Gracias.
Responder Con Cita