Как я могу получить набор объектов в памяти? - PullRequest
8 голосов
/ 02 марта 2012

Кто-нибудь знает о потомке TDataset, который работает с Generics и RTTI, чтобы я мог писать такой код и использовать компоненты с поддержкой данных в GUI?:

...
ds:TDataset<TPerson>;
...

procedure DoStuff;
begin    
  ds:=TDataset<TPerson>.create;
  ds.add(TPerson.Create('A.','Hitler',77));
  ds.add(TPerson.Create('O.','Bin Laden',88));
 end; 

Это должно быть возможным.Fielddefs могут быть созданы через RTTI, потому что точный тип данных известен.Значения также можно автоматически маршалировать назад и вперед, так что вы можете как просматривать, так и редактировать данные в классе или записи.

Я ненавижу писать много бесполезного кода маршалинга, в то время как необходимая информация для этогоуже доступен через RTTI.

Или, может быть, кто-то когда-то написал какой-то адаптер TEnumerable <-> TDataset?

Существует ли что-то подобное или я должен начать писать?

...

Ближайшая вещь, которую я смог найти, - это (отлично!) пример от Marco Cantu из Mastering Delphi 7, но сам код этого не делаетиспользовать новые языковые функции, такие как дженерики, новая система RTTI или атрибуты, и это не работает с Unicode Delphi.TDataset также изменился с D7.

Ответы [ 5 ]

4 голосов
/ 02 марта 2012

Набор TAureliusDataSet, включенный в TMS Aurelius , очень близок к этому.

2 голосов
/ 08 марта 2013

Взгляните на EverClassy Dataset из Inovativa на www.inovativa.com.br / public .

1 голос
/ 24 января 2015

Я нашел более подходящий ресурс и не могу не поделиться им!Настолько уместно, что я думаю, что это заслуживает отдельного поста, а не простого обновления в моем первом ответе.


Библиотека Dduce для Delphi XE2-XE6 делаетиспользование TListDataSet<...> универсального компонента набора данных, который можно использовать для предоставления универсального списка в качестве TDataSet.

Наиболее важные единицы, относящиеся к реализации универсального набора данных:

Иерархия классов:

TDataSet <= TCustomVirtualDataset <= TListDataset <= <strong>TListDataset

Да, он наследует множество функций ... Мое единственное желание - иметь в своем распоряжении версию, работающую с меньшими требованиями (Delphi XE без большинства других наворотов).

Внешний вид:

enter image description here

1 голос
/ 01 ноября 2013

другой набор данных объекта Snap http://digilander.libero.it/snapobject/

1 голос
/ 09 апреля 2012

DotNet4Delphi от Технология планирования A-Dato из Нидерландов - это хорошо для вас.

enter image description here

Котировки:

Из Дельфи Торри

Подключите любую коллекцию к элементам управления данными .

DotNet4Delphi реализует множество классов коллекций .Net, включая универсальные типы , такие как List <> и Dictionary <>. Отличается от их Аналог Delphi состоит в том, что наши общие коллекции также реализуют неуниверсальные интерфейсы (IList, IDictionary), позволяющие получить доступ ваши коллекции несколькими способами. Это открывает дверь для использования любого сбор в качестве источника данных для элементов управления с учетом данных, который точно что обеспечивает (также включенный) компонент TListDataset.

Он нацелен на Delphi XE и XE2.

Это инициатива с открытым исходным кодом, Delphi качает !!!

...