Fastream Technologies wrote: > Do you mean the tree self-destructs nodes and I will be notified of > it to delete?
You are notified before the class removes and frees a node, i.e method Remove() triggers event OnFreeData and afterwards frees the node. The class doesn't own Data but its nodes, so never call method Free of a node returned by a method. However if Data points to some previously allocated memory you are responsible to release it. > Or is it optional? Yes, more or less it is. If you, for instance, used Data to store just an Integer value it's not required to free any memory. Example: procedure TForm1.CacheFreeData(Sender: TObject; Data: Pointer; Len: Integer); begin FreeMem(Data); end; procedure TForm1.Button1Click(Sender: TObject); var Node: TCacheNode; MyData: Pointer; begin FCache := TCacheTree.Create; try FCache.OnFreeData := CacheFreeData; GetMem(MyData, 1024); FCache.Insert('AKEY', MyData, 0, Now); // either Node := FCache.FindKey('AKEY'); if Node <> nil then FCache.Remove(Node); // Node no longer valid // or FCache.RemoveKey('AKEY'); finally FCache.Free; end; end; -- To unsubscribe or change your settings for TWSocket mailing list please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket Visit our website at http://www.overbyte.be