Jump to content

Kees Dijksman

Members
  • Content Count

    1
  • Joined

  • Last visited

Everything posted by Kees Dijksman

  1. @Stefan Glienke I am testing smart-pointers in Delphi Rio using Spring4D. Here is my testprogram. I created a generic TObjectlist and I want to add simple TObjects to this list using Shared.Make(TTestObj.Create). The problem is that whenever I add an object to the List the previous object is released. See the output of my program. Does anyone know how to solve this problem? Thanks in advance. program TestSmartPointer; {$APPTYPE CONSOLE} uses Spring, Diagnostics, Classes, SysUtils, System.Generics.Collections; type TTestObj = class private FDescription: string; public property Description: string read FDescription write FDescription; destructor Destroy; override; end; TTestList = class(TObjectList<TTestObj>) public destructor Destroy; override; end; procedure Test_SmartPointer; begin Writeln('SmartPointer test started'); var lTestList := Shared.Make(TTestList.Create)(); lTestList.OwnsObjects := false; for var i := 1 to 10 do begin var lTestObj := Shared.Make(TTestObj.Create)(); // var lTestObj := TTestObj.Create; lTestObj.Description := i.ToString; Writeln(format('TestObj with description %s added to Testlist', [lTestObj.Description])); lTestList.Add(lTestObj); end; Writeln('SmartPointer test finished'); end; { TTestObj } destructor TTestObj.Destroy; begin Writeln(format('TestObj with description %s is destroyed', [FDescription])); inherited; end; { TTestList } destructor TTestList.Destroy; begin Writeln('TTestList is destroyed'); inherited; end; begin Test_SmartPointer; Readln; end.
×