Как получить набор данных объектов в памяти?
кто-нибудь знает потомка TDataset, который работает с дженериками и 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 адаптер?
существует ли что-то подобное, или я должен начать писать?
...
Самое близкое, что я мог найти, это (отлично!) пример Марко Канту, от освоения Delphi 7, но сам код не использует новый языковые функции, такие как дженерики, новая система RTTI или атрибуты, и она не работает с Unicode delphi. TDataset также изменился с D7.
5 ответов
DotNet4Delphi by A-Dato Технология Планирования из Нидерландов хорошо для вас.
цитаты:
из Дельфи Торри
подключить любую коллекцию на управление данными.
DotNet4Delphi реализует множество классов коллекций .Net, включая универсального типа как список и словарь. Отличается от их Аналог Delphi заключается в том, что наши общие коллекции также реализуют неродовые интерфейсы (IList, IDictionary), позволяющие получить доступ свои коллекции несколькими способами. Это открывает дверь для использования любого коллекция в качестве источника данных для данных управления, которая в точности что обеспечивает (также включенный) компонент TListDataset.
Он нацелен на Delphi XE и XE2.
Это инициатива с открытым исходным кодом, Delphi rocks !!!
Я нашел более релевантный ресурс и не могу не поделиться им! Настолько актуально, что я думаю, что он заслуживает отдельного сообщения, а не просто обновления в моем первом ответе.
на Dduce библиотека для Delphi XE2-XE6 использует TListDataSet<...>
компонент универсального набора данных, который можно использовать для предоставления общий список как TDataSet.
наиболее релевантные единицы, относящиеся к реализации универсального набора данных являются:
- DDuce.Комплектующие.VirtualDataSet.pas (оригинал so post сам цитируется автором в исходном коде в качестве ссылки среди других!!!)
- DDuce.Комплектующие.Пункт listdataset.pas
иерархия классов:
TDataSet TListDataset
Да, он наследует множество функций... мое единственное желание в моем распоряжении должна быть версия, работающая с уменьшенным требованием (Delphi XE без большинства других наворотов).