AGB  ·  Datenschutz  ·  Impressum  







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

Leak verzweifelt gesucht

Ein Thema von DGL-luke · begonnen am 4. Nov 2006 · letzter Beitrag vom 5. Nov 2006
Antwort Antwort
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

Re: Leak verzweifelt gesucht

  Alt 4. Nov 2006, 20:03
Um jetzt nicht einen neuen Thread aufzumachen: Ich habe ein ähnliches Problem ... warum kommt es hier zu MemoryLeaks:

Delphi-Quellcode:
procedure TMainForm.ListCategories;

procedure AddChilds(Parent: PVirtualNode; Items: array of integer);
var
  i: integer;
  Data: PCategoryData;
begin
  for i := 0 to length(Items) -1 do
  begin
    Data := Categories.GetNodeData(Categories.AddChild(Parent));
    Data.Caption := Cats[Items[i]].Caption;
    Data.Hint := Cats[Items[i]].Hint;
    Data.ImageIndex := Items[i];
  end;
end;

function AddParent(ID: integer): PVirtualNode;
var
  Data: PCategoryData;
begin
  Result := Categories.AddChild(nil);
  Data := Categories.GetNodeData(Result);
  Data.Caption := Cats[ID].Caption;
  Data.Hint := Cats[ID].Hint;
  Data.ImageIndex := ID;
  Data.IsParent := true;
end;

begin
  Categories.Clear;
  Categories.BeginUpdate;
  try
    //Client
    AddChilds(AddParent(0), [1, 2, 3]);
    //Information
    AddChilds(AddParent(4), [5, 6, 7, 8, 9, 10, 11]);
    //Administration
    AddChilds(AddParent(12), [13, 14, 15, 16, 17, 18]);
    //Shell
    AddChilds(AddParent(19), [20, 21]);
    //Sonstiges
    AddChilds(AddParent(22), [23, 24, 25, 26, 27, 28, 29, 30, 31]);
    //Spionage
    AddChilds(AddParent(32), [33, 34, 35, 36, 37]);
    //Manager
    AddChilds(AddParent(38), [39, 40, 41, 42, 43, 44]);

    //Plugins
    PluginNode := AddParent(45);
    //Server erstellen
    AddParent(46);
  finally
    Categories.EndUpdate;
  end;
end;
Delphi-Quellcode:
type
  PCategoryData = ^TCategoryData;
  TCategoryData = record
    Caption: string;
    Hint: string;
    ImageIndex: integer;
    IsParent: boolean;
  end;

type
  TCatData = record
    Caption: string;
    Hint: string;
  end;

var
  Cats: array of TCatData;
Cats wird aus einer INI Datei dynamisch geladen. Dabei sind die Items immer mit Zahlen belegt (es ist eine durchgehende Zahlenreihe von 0 .. 46)

Delphi-Quellcode:
Ini.ReadSection('Categories', Items);
SetLength(Cats, Items.Count);
for i := 0 to Items.Count -1 do
begin
  try
    Cats[StrToInt(Items[i])].Caption := Ini.ReadString('Categories', Items[i], '');
    Cats[StrToInt(Items[i])].Hint := Ini.ReadString('CatHints', IntToStr(i), '');
  except

  end;
end;
Die Freigabe sieht so aus:

Delphi-Quellcode:
procedure TMainForm.CategoriesFreeNode(Sender: TBaseVirtualTree;
  Node: PVirtualNode);
var
  NodeArray: PCategoryData;
begin
  NodeArray := Sender.GetNodeData(Node);
  Finalize(NodeArray^);
end;
Florian
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  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 14:40 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