Olá à todos!
Tenho uma unit que cria o componente TACBrSATExtratoFR na mão e estava tendo problema de memory leak;
No destructor desta unit (ACBrSATExtratoFR.pas) eu acrescentei as 2 linhas abaixo e aparentemente resolveu o problema. Podem dar uma verificada por favor se é isso mesmo? Obrigado.
if Assigned(frxReport) then
frxReport.Free;
Exemplo:
function TEmissor.CriarComponenteDANFESat: TACBrSATExtratoClass;
begin
Result := TACBrSATExtratoFR.Create(nil);
TACBrSATExtratoFR(Result).FastExtrato := 'caminho do .fr3';
TACBrSATExtratoFR(Result).LarguraBobina := 290;
TACBrSATExtratoFR(Result).MargemSuperior := 0;
TACBrSATExtratoFR(Result).MargemInferior := 0;
TACBrSATExtratoFR(Result).MargemEsquerda := 0;
TACBrSATExtratoFR(Result).MargemDireita := 4;
TACBrSATExtratoFR(Result).MostraPreview := False;
TACBrSATExtratoFR(Result).EspacoFinal := 0;
Result.ACBrSAT := FACBrSAT;
end;
function TEmissor.DownloadPdfSat(cFile: string): TBytes;
var
DANFESat: TACBrSATExtratoClass;
begin
DANFESat := CriarComponenteDANFESat;
try
FACBrSAT.CFe.Clear;
FACBrSAT.CFe.LoadFromFile(cFile);
DANFESat.Filtro := TACBrSATExtratoFiltro.fiPDF;
DANFESat.NomeDocumento := copy(cFile, 1, LastDelimiter('.', cFile)) + 'pdf';
DANFESat.NumCopias := 1;
DANFESat.PathPDF := copy(cFile, 1, LastDelimiter('\', cFile));
try
DANFESat.ImprimirExtrato();
finally
;
end;
try
Result := TFile.ReadAllBytes(DANFESat.ArquivoPDF);
finally
;
end;
finally
FreeAndNil(DANFESat);
end;
end;
Obrigado.
Paulo R Vieira Jr
Wisesoft Sistemas