AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi [Erledigt] Preview Handler in VCL erzeugt MemoryLeak
Thema durchsuchen
Ansicht
Themen-Optionen

[Erledigt] Preview Handler in VCL erzeugt MemoryLeak

Ein Thema von Aviator · begonnen am 16. Feb 2014 · letzter Beitrag vom 31. Mai 2015
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.409 Beiträge
 
Delphi 12 Athens
 
#1

AW: [Erledigt] Preview Handler in VCL erzeugt MemoryLeak

  Alt 11. Mär 2014, 13:12
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;
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (11. Mär 2014 um 13:16 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von fs999
fs999

Registriert seit: 4. Dez 2006
Ort: Luxembourg
46 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: [Erledigt] Preview Handler in VCL erzeugt MemoryLeak

  Alt 11. Mär 2014, 15:42
Der Fehler tritt auf der vorige Linie auf :
FPreviewHandler := CreateComObject(LPreviewGUID) as IPreviewHandler;
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#3

AW: [Erledigt] Preview Handler in VCL erzeugt MemoryLeak

  Alt 31. Mai 2015, 10:11
Ich hätte gerne den Windows preview Handler, von dem in diesem Thread die Rede ist, in mein Programm eingebunden - unter Delphi 2009 ist aber das Interface IPreviewHandler anscheinend noch nicht definiert (oder muss man da noch etwas extra in die uses-clause aufnehmen?), deshalb kompiliert die Unit nicht.
Gibt es eine Möglichkeit, das auch unter Delphi 2009 zum Laufen zu bringen?
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: [Erledigt] Preview Handler in VCL erzeugt MemoryLeak

  Alt 31. Mai 2015, 11:56
Die Interfaces sind bei XE3 in der WinAPI.PropSys Unit deklariert. Folglich sollten diese unter Delphi 2009 in der Unit PropSys deklariert sein. Allerdings weiß ich nicht, ob diese dort schon existiert haben oder ob diese nicht in einer anderen Unit deklariert wurden. Habe leider kein Delphi 2009 sondern nur XE3 und XE4.

Edit: Sorry das Interface IPreviewHandler ist in der Unit ShlObj definiert. Ich meinte die anderen Interfaces IInitializeWithFile, ...
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#5

AW: [Erledigt] Preview Handler in VCL erzeugt MemoryLeak

  Alt 31. Mai 2015, 16:20
Tja, unter Delphi 2009 gibt es diese Interfaces offenbar noch nicht, die Unit ist ja eingebunden.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.409 Beiträge
 
Delphi 12 Athens
 
#6

AW: [Erledigt] Preview Handler in VCL erzeugt MemoryLeak

  Alt 31. Mai 2015, 16:37
MSDN-Library durchsuchenIPreviewHandler
Im MSDN/PSDK steht ja genau drin, wie das Interface aussieht und man kann es problemlos auch selber implementieren.

Und es ist nicht so, als wenn man nicht auch sowas in Fremdkomponenten finden könnte.
Bei Google suchenIPreviewHandler Delphi
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#7

AW: [Erledigt] Preview Handler in VCL erzeugt MemoryLeak

  Alt 31. Mai 2015, 17:56
Nachdem ich mich bis jetzt recht wenig mit COM Klassen beschäftigt habe, bin ich auf der Suche nach einer zumindest halbfertigen Lösung (Delphi Wrapper). Natürlich kann man mit umfangreichen Studium der Dokuentation prinzipiell alles programmieren, aber hier wäre mir eine fertige Komponente oder Klasse entschieden lieber.

Dazu Google zu verlinken, ist nicht allzu hilfreich - dort habe ich schon gesucht. Man findet sehr viel, aber ich habe nichts brauchbares entdeckt, vor allem, wie es aussieht, nicht für Delphi 2009.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:35 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