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.