Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi [Erledigt] Preview Handler in VCL erzeugt MemoryLeak (https://www.delphipraxis.net/179132-%5Berledigt%5D-preview-handler-vcl-erzeugt-memoryleak.html)

Aviator 16. Feb 2014 18:34

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.

Furtbichler 17. Feb 2014 00:27

AW: Preview Handler in VCL erzeugt MemoryLeak - Lösung gesucht
 
Zitat:

Zitat von jaenicke (Beitrag 1248119)
Nein, ich meinte Sir Rufo, da ich davon ausgegangen bin, dass er den Link gesehen hatte, aber trotzdem nicht erst einmal dort nachgeschaut und ausprobiert hat. Das kommt hier in der DP in letzter Zeit leider häufiger vor, dass ähnliche Kurzbeiträge druntergehauen werden obwohl im Beitrag eigentlich alles drin ist, es nachzuvollziehen aber vielleicht 1-2 Minuten mehr erfordert hätte.
(Hauptsache Beitragszähler erhöhen?)

Na, wenigstens haben wir hier ein echtes Soziophob, aka 'sas Jänicke', das wohl sonst nichts zu tun hat, und die 1-2 Minuten verschwendet, um einem lieblos dahingerotzen Link zu folgen, sich die Quellen runterzuladen, die Fehler zu finden und zu posten und das in gerade 1-2 Minuten.

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..

jaenicke 17. Feb 2014 05:45

AW: Preview Handler in VCL erzeugt MemoryLeak - Lösung gesucht
 
Zitat:

Zitat von Furtbichler (Beitrag 1248141)
1-2 Minuten könnten dezent untertrieben sein. Außer, Du hast den Fluxkompensator und Dimensionsfalten.

In ca. 1 Minute hatte ich gesehen, dass die Demo auch dieses Problem hat. Da ist ja auch nix weiter dabei.

Bis ich den Fehler an sich gesehen hatte waren es noch einmal 5-10 Minuten, aber davon hatte ich ja auch nicht gesprochen.

mkinzler 17. Feb 2014 06:35

AW: [Erledigt] Preview Handler in VCL erzeugt MemoryLeak
 
Zitat:

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..
Diese Frage solltest Du Dir auch mal stellen.

Daniel 17. Feb 2014 07:32

AW: Preview Handler in VCL erzeugt MemoryLeak - Lösung gesucht
 
Zitat:

Zitat von Furtbichler (Beitrag 1248141)
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..

Da hatte wohl jemand einen sehr schlechten Abend. :roll:
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.

fs999 10. Mär 2014 15:17

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:
LIStream := nil;
dahinter.

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;

jaenicke 10. Mär 2014 15:45

AW: [Erledigt] Preview Handler in VCL erzeugt MemoryLeak
 
Zitat:

Zitat von fs999 (Beitrag 1251399)
Die Variabel LIStream wird nicht genilt...

Wozu auch?
Der Referenzzähler wird dann eben erst am Ende der Methode dekrementiert, aber das stört doch auch nicht, oder?

Zitat:

Zitat von fs999 (Beitrag 1251399)
Ich habe aber noch ein Problem, mit BDS 2006 funktioniert es überhaupt nicht, nach eine Minute warten : EOleSystemError : Unspecified Error.

Bei welchem Betriebssystem denn?
Und funktioniert die beiliegende kompilierte Demo vielleicht auch nicht?

fs999 11. Mär 2014 13:04

AW: [Erledigt] Preview Handler in VCL erzeugt MemoryLeak
 
Zitat:

Zitat von jaenicke (Beitrag 1251404)
Der Referenzzähler wird dann eben erst am Ende der Methode dekrementiert, aber das stört doch auch nicht, oder?

Das hat aber gebracht dass das Programm nicht abstürtzt.

Zitat:

Zitat von jaenicke (Beitrag 1251404)
Bei welchem Betriebssystem denn?
Und funktioniert die beiliegende kompilierte Demo vielleicht auch nicht?

-Win7 64bit.
-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

himitsu 11. Mär 2014 13:12

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:

Delphi-Quellcode:
function TInterfacedObject.QueryInterface(const IID: TGUID; out Obj): HResult;
begin
  if GetInterface(IID, Obj) then
    Result := 0
  else
    Result := E_NOINTERFACE;
end;

function TObject.GetInterface(const IID: TGUID; out Obj): Boolean;
begin
  Pointer(Obj) := nil; // <<<<<
  ...
end;


fs999 11. Mär 2014 15:42

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 19:11 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz