AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ShellTreeView Memory Leak

Ein Thema von Bjoerk · begonnen am 6. Mai 2015 · letzter Beitrag vom 7. Mai 2015
Antwort Antwort
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#1

ShellTreeView Memory Leak

  Alt 6. Mai 2015, 14:46
Ich bekomme bei ShellTreeViews ein Memory Leak sobald die Komponente nur auf der Form ist. Hat jemand dieses Leak auch mal gehabt bzw. gefunden an was es lag? Die Fehlermeldung ist leider ziemlich dürftig?
Angehängte Dateien
Dateityp: pdf ShellTreeViewLeak.pdf (94,2 KB, 21x aufgerufen)
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: ShellTreeView Memory Leak

  Alt 6. Mai 2015, 17:00
Da ist doch was:

[DCC Warnung] ShellCtrls.pas(209): W1010 Methode 'Destroy' verbirgt virtuelle Methode vom Basistyp 'TCustomTreeView'

Delphi-Quellcode:
procedure TCustomShellTreeView.CreateWnd;
begin
  inherited CreateWnd; // ????????????????
  if (Items.Count > 0) then
    ClearItems;
  if not Assigned(Images) then SetUseShellImages(FUseShellImages);
  { TODO : What is the Items.Count test for here? }
  if (not FLoadingRoot) {and (Items.Count = 0)} then
    CreateRoot;
end;

destructor TCustomShellTreeView.Destroy; // *************************
begin
  ClearItems;
  FRootFolder.Free;
  inherited;
end;
Beim destructor von TCustomShellTreeView stand kein ovveride. Wenn man das einfügt bekommt man nun folgende Fehlermeldung: ShellTreeView (so heißt die Instanz) hat kein übergeordnetes Fenster. ???
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: ShellTreeView Memory Leak

  Alt 6. Mai 2015, 18:44
Das löst die Exception aus.
Delphi-Quellcode:
procedure TCustomShellTreeView.ClearItems;
var
  I: Integer;
begin
  Items.BeginUpdate; // ****************
  try
    for I := 0 to Items.Count-1 do
    begin
      if Assigned(Folders[i]) then
        Folders[I].Free;
      Items[I].Data := nil;
    end;
    Items.Clear;
  finally
    Items.EndUpdate;
  end;
end;
Ich schreib das jetzt ohne die BeginEndUpdates in den destructor und gut ist. Kein Bock mehr..

Geändert von Bjoerk ( 6. Mai 2015 um 18:46 Uhr)
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: ShellTreeView Memory Leak

  Alt 6. Mai 2015, 19:17
Jetzt muß ich doch noch mal nachfragen. Ich hab das Package entfernt und wollte es neu installieren. Nun will "er" das aber nicht.
Angehängte Dateien
Dateityp: pdf Package kann nicht installiert werden.pdf (128,4 KB, 8x aufgerufen)
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#5

AW: ShellTreeView Memory Leak

  Alt 6. Mai 2015, 19:49
Jetzt muß ich doch noch mal nachfragen. Ich hab das Package entfernt und wollte es neu installieren. Nun will "er" das aber nicht.
Entfernt, oder nur das Häkchen entfernt?

Das Dialogfenster mit den Packages nach dem Entfernen auch geschlossen und dann wieder geöffnet und dann erst das gleichnamige Package installiert?

Im Notfall IDE neu gestartet?


Ja ich weiss, sind banale Fragen, aber über solche lapidaren Sachen stolpert man manchmal, wenn man schon zu lange über eine Sache grübelt.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: ShellTreeView Memory Leak

  Alt 6. Mai 2015, 20:09
Jetzt muß ich doch noch mal nachfragen. Ich hab das Package entfernt und wollte es neu installieren. Nun will "er" das aber nicht.
Meinst du schaffst es statt dieser PDF im Anhang einfach in dem Dialog STRG-C zu drücken und dann hier im Editor STRG-V?

Das spart Speicherplatz und Bandbreite und schneller lesbar ist es auch noch ... und sogar suchbar, kurz gesagt nur Vorteile.
Das Verfahren nennt sich im Übrigen CopyPaste
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

AW: ShellTreeView Memory Leak

  Alt 6. Mai 2015, 20:31
Ach du meine Güte. Screenshots als PDF. Da sind wir wohl haarscharf an einem Word Dokument vorbei geschlittert.
Michael
Ein Teil meines Codes würde euch verunsichern.
  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 02:23 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