![]() |
AW: Preview Handler in VCL erzeugt MemoryLeak - Lösung gesucht
Super. Danke das du nach einer Lösung gesucht hast.
Die Zeile habe ich von mir aus schon mit OpenKeyReadOnly ersetzt. Trotzdem danke für den Hinweis. |
AW: Preview Handler in VCL erzeugt MemoryLeak - Lösung gesucht
Zitat:
Respekt Wastl. 1-2 Minuten könnten dezent untertrieben sein. Außer, Du hast den Fluxkompensator und Dimensionsfalten. Frage: Wieso musst Du auf anderen herumtrampeln, um dich selbst zu erhöhen? Was fehlt Dir? Ach, ich weiß: Fängt mit 'S' an und hört mit 'wuststein' auf. Dazwischen ist noch ein 'elbstbe' Und: Ja, es ist nicht das erste mal, daß Du so unangenehm auffällst.. |
AW: Preview Handler in VCL erzeugt MemoryLeak - Lösung gesucht
Zitat:
Bis ich den Fehler an sich gesehen hatte waren es noch einmal 5-10 Minuten, aber davon hatte ich ja auch nicht gesprochen. |
AW: [Erledigt] Preview Handler in VCL erzeugt MemoryLeak
Zitat:
|
AW: Preview Handler in VCL erzeugt MemoryLeak - Lösung gesucht
Zitat:
Und es ist auch keineswegs das erste mal, dass Du mit solchen Beiträgen auffällst. Ich wiederhole Triviales: Es steht jedem frei, auf ein Thema auch mal nicht zu antworten - insbesondere dann, wenn man nichts Konstruktives beizutragen hat. |
AW: [Erledigt] Preview Handler in VCL erzeugt MemoryLeak
Die Variabel LIStream wird nicht genilt...
Nach
Delphi-Quellcode:
,
LInitializeWithStream.Initialize(LIStream, STGM_READ);
einfach
Delphi-Quellcode:
dahinter.
LIStream := nil;
Ich habe aber noch ein Problem, mit BDS 2006 funktioniert es überhaupt nicht, nach eine Minute warten : EOleSystemError : Unspecified Error. Und noch schlimmer wenn ich das Programm ohne Delphi starte, bekomme ich nach 5 Sekunden die Windowsmeldung dass das Programm abgestürzt ist... Habe die fehlende Units PropSys and StructuredQueryCondition in das Appliverzeichnis kopiert und IPreviewInterface mit ein paar Konstanten eingefügt. Der Fehler ist auf diese Line in LoadPreviewHandler :
Delphi-Quellcode:
FPreviewHandler := CreateComObject(LPreviewGUID) as IPreviewHandler;
|
AW: [Erledigt] Preview Handler in VCL erzeugt MemoryLeak
Zitat:
Der Referenzzähler wird dann eben erst am Ende der Methode dekrementiert, aber das stört doch auch nicht, oder? Zitat:
Und funktioniert die beiliegende kompilierte Demo vielleicht auch nicht? |
AW: [Erledigt] Preview Handler in VCL erzeugt MemoryLeak
Zitat:
Zitat:
-Die kompilierte Demo benutzt LInitializeWithFile, ich benutze LInitializeWithStream. Mea culpa, dass hätte ich sagen müssen, ich habe die Streamroutine als erste geswapt...
Delphi-Quellcode:
if FPreviewHandler.QueryInterface(IInitializeWithStream, LInitializeWithStream) = S_OK then
begin FFileStream := TFileStream.Create(FFileName, fmOpenRead or fmShareDenyNone); LIStream := TStreamAdapter.Create(FFileStream, soOwned) as IStream; LInitializeWithStream.Initialize(LIStream, STGM_READ); LIStream := nil; end else if FPreviewHandler.QueryInterface(IInitializeWithFile, LInitializeWithFile) = S_OK then LInitializeWithFile.Initialize(StringToOleStr(FFileName), STGM_READ) else |
AW: [Erledigt] Preview Handler in VCL erzeugt MemoryLeak
Vor dem Aufruf von QueryInterface sollte die Interface-Variable unbedingt leer sein. Wenn nicht, dann vorher manuell auf NIL setzen.
Vorallem innerhalb von Schleifen, oder wenn die Variable vorher für was Anderes verwendet wurde. QueryInterface, bzw. GetInterface sind mit Out-Parametern deklariert, womit die Eingabe "verworfen" wird, unter Ausschluß der Referenzzählung. Sowas kann auch bei anderen Funktionen vorkommen, also immer schön aufpassen. Zitat:
|
AW: [Erledigt] Preview Handler in VCL erzeugt MemoryLeak
Der Fehler tritt auf der vorige Linie auf :
Delphi-Quellcode:
FPreviewHandler := CreateComObject(LPreviewGUID) as IPreviewHandler;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06: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