![]() |
Eigenartige Memory Leaks bei QuickReport
Hallo zusammen,
zunächst um das vorweg zu nehmen: ich nutze Delphi 2010 und QuickReport 5. Ich habe mir auf einem Formular einen QuickReport erstellt, der bei Bedarf in PDF oder in XLS exportiert werden soll. Dies funktioniert mit dem folgenden Quelltext auch optimal:
Delphi-Quellcode:
und das gleiche für PDF
procedure TForm1.alsXLS1Click(Sender: TObject);
var ExportFilter : TQRXLSFilter; begin if savedialog2.Execute then try try ExportFilter := TQRXLSFilter.Create(savedialog2.FileName); form5.QuickRep1.ExportToFilter(ExportFilter); finally ExportFilter.Free; end; except messagedlg('Es ist ein Fehler beim Exportieren aufgetreten.',mtError,[mbOK],0); end; end;
Delphi-Quellcode:
Wie gesagt, die Datei wird erstellt, alles ist lesbar und eigentlich so wie ich es haben möchte. Allerdings bekommen ich durch
procedure TForm1.alsPDF1Click(Sender: TObject);
var ExportFilter : TQRPDFDocumentFilter; begin if savedialog1.Execute then try try ExportFilter := TQRPDFDocumentFilter.Create(savedialog1.FileName); form5.QuickRep1.ExportToFilter(ExportFilter); finally ExportFilter.Free; end; except messagedlg('Es ist ein Fehler beim Exportieren aufgetreten.',mtError,[mbOK],0); end; end;
Delphi-Quellcode:
bei Beenden der Anwendung folgende Memory Leaks angezeigt.
System.ReportMemoryLeaksOnShutdown:=true;
Bei PDF-Export "An unexpected Memory Leak has occured. The unexpected small block leaks are: 21-28 bytes: TMBCSEncoding x 1" Bei XLS-Export "An unexpected Memory Leak has occured. The unexpected small block leaks are: 69-76 bytes: TStringList x 2" Nach Wegklicken der Fehlermeldung bekomme ich in der Entwicklungsumgebung dann die Windows-Fehlermeldung "Programm funktioniert nicht mehr ...". Wenn ich das Programm jedoch als exe laufen lasse, dann bleibt diese letzte Fehlermeldung aus. Genauso sieht dies übrigens beim "normalen Druck" des QuickReports aus. Der Report wird gedruckt, in der Entwicklungsumgebung bekommen ich allerdings bei Schließen der Anwendung wieder den "Das Programm funktionier nicht mehr"-Fehler. Vielleicht hat ja jemand schon ähnliche Probleme gehabt, und kann mir ein wenig weiterhelfen. Vielen Dank schonmal, jackandthejuice |
AW: Eigenartige Memory Leaks bei QuickReport
Delphi-Quellcode:
Free im Finally = Create direkt vor dem Try.
ExportFilter := TQRPDFDocumentFilter.Create(savedialog1.FileName);
try form5.QuickRep1.ExportToFilter(ExportFilter); finally ExportFilter.Free; end; Denn passiert im Create ein Fehler, würde die Variable nicht ordnungsgemäß initialisiert und das Free hätte ein Problem. PS: Tritt im Create eine Exception auf, dann wird von der VCL automatisch Free/Destroy aufgerufen und das grade erzeugte Objekt wieder freigegeben. ![]() ![]() |
AW: Eigenartige Memory Leaks bei QuickReport
Das bringt leider auch nicht viel. Der Code sind jetzt aus wie folgt, aber dennoch kommt es immer noch zu den altbekannten Memory Leaks.
Delphi-Quellcode:
Das Gleiche im Übrigen bei PDF.
procedure TForm1.alsXLS1Click(Sender: TObject);
var ExportFilter : TQRXLSFilter; begin if savedialog2.Execute then begin ExportFilter := TQRXLSFilter.Create(savedialog2.FileName); try try form5.QuickRep1.ExportToFilter(ExportFilter); except messagedlg('Es ist ein Fehler beim Exportieren aufgetreten.',mtError,[mbOK],0); end; finally ExportFilter.Free; end; end; end; |
AW: Eigenartige Memory Leaks bei QuickReport
Nja, zumindestens liegt es dann nicht mehr an diesem Code und du machst es richtig.
Wenn QuickReport intern ein paar Speicherlecks hat, dann kannst du daran leider nicht viel ändern. |
AW: Eigenartige Memory Leaks bei QuickReport
Dann nehme ich an, dass ich wohl oder übel damit leben muss (es sei denn ich benutze andere Reports). Eigenartig ist dennoch, dass beispielsweise beim Drucken in der Entwicklungsumgebung der besagte Windows-Fehler auftritt (aber kein Debugger-Fehler), bei Nutzung außerhalb der Entwicklungsumgebung jedoch kein Fehler auftritt.
Scheint dann ja tatsächlich ein Fehler von QuickReport zu sein. Vielen Dank aber auf jeden Fall! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz