unit InMemoryDataU; interface uses System.Generics.Collections, BusinessObjectsU; function GetPeopleList: TObjectList; function GetPeopleSmallList: TObjectList; function GetInterfacedPeopleList: TList; implementation uses System.SysUtils; var GPeople, GPeopleSmall: TObjectList; function GetInterfacedPeopleList: TList; var lPerson: IPerson; begin Result := TList.Create; lPerson := TInterfacedPerson.Create; lPerson.Name := 'Daniele Teti'; lPerson.Age := 40; lPerson.DOB := EncodeDate(1979, 11, 4); Result.Add(lPerson); lPerson := TInterfacedPerson.Create; lPerson.Name := 'Peter Parker'; lPerson.Age := 35; lPerson.DOB := EncodeDate(1984, 11, 4); Result.Add(lPerson); end; procedure PopulateList; var p: TPerson; I: Integer; begin GPeople := TObjectList.Create(True); for I := 1 to 1000 do begin p := TPerson.Create; p.FirstName := 'Daniele'; p.LastName := 'Teti'; p.DOB := EncodeDate(1979, 11, 4); p.Married := True; GPeople.Add(p); p := TPerson.Create; p.FirstName := 'John'; p.LastName := 'Doe'; p.DOB := EncodeDate(1879, 10, 2); p.Married := False; GPeople.Add(p); p := TPerson.Create; p.FirstName := 'Jane'; p.LastName := 'Doe'; p.DOB := EncodeDate(1883, 1, 5); p.Married := True; GPeople.Add(p); end; end; function GetPeopleList: TObjectList; begin Result := GPeople; end; procedure PopulateSmallList; var p: TPerson; begin GPeopleSmall := TObjectList.Create(True); p := TPerson.Create; p.FirstName := 'Daniele'; p.LastName := 'Teti'; p.DOB := EncodeDate(1979, 11, 4); p.Married := True; GPeopleSmall.Add(p); p := TPerson.Create; p.FirstName := 'John'; p.LastName := 'Doe'; p.DOB := EncodeDate(1879, 10, 2); p.Married := False; GPeopleSmall.Add(p); p := TPerson.Create; p.FirstName := 'Jane'; p.LastName := 'Doe'; p.DOB := EncodeDate(1883, 1, 5); p.Married := True; GPeopleSmall.Add(p); end; function GetPeopleSmallList: TObjectList; begin Result := GPeopleSmall; end; initialization PopulateList; PopulateSmallList; finalization GPeople.Free; GPeopleSmall.Free; end.