He encontrado un bug en el componente si el evento OnRegFac no está asignado antes de hacer un envío (lo cual causa una excepción).
En la demo este error no se muestra debido a que creamos el componente VeriFactuD7 en runtime, así como le asignamos dicha propiedad.
Para solucionarlo, debemos cambiar el código del componente (uVerifacu):
Debemos cambiar este código:
Código Delphi
[-]procedure _callbackRF(filehandleMap:longint); stdcall;
var
callback_RF_info:TFileHandledRecordCall;
begin
try
loadFileMappingData(@callback_RF_info, sizeof(callback_RF_info), filehandleMap);
callBacksVeriFactus[callback_RF_info.sesion].FOnRegFac(callBacksVeriFactus[callback_RF_info.sesion] ,callback_RF_info.numSerieFactura, callback_RF_info.streamXML );
except
ON E:Exception do
begin
ShowMessage('Error excepcion: '+E.Message);
end;
end;
end;
Por este otro en el que nos aseguramos que el evento esté asignado:
Código Delphi
[-]procedure _callbackRF(filehandleMap: longint); stdcall;
var
callback_RF_info: TFileHandledRecordCall;
callbackObj: TVeriFactu;
begin
try
loadFileMappingData(@callback_RF_info, sizeof(callback_RF_info), filehandleMap);
callbackObj := callBacksVeriFactus[callback_RF_info.sesion];
if Assigned(callbackObj) then
begin
if Assigned(callbackObj.FOnRegFac) then
callbackObj.FOnRegFac(callbackObj, callback_RF_info.numSerieFactura, callback_RF_info.streamXML)
else
OutputDebugString(PAnsiChar('Advertencia: El evento FOnRegFac no está asignado.'));
end
else
OutputDebugString(PAnsiChar('Error: callBacksVeriFactus[' + IntToStr(callback_RF_info.sesion) + '] es nil.'));
except
on E: Exception do
ShowMessage('Error excepción en _callbackRF: ' + E.Message);
end;
end;
Es posible que tengáis que desinstalar y volver a instalar el componente tras el cambio.
Un saludo