Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > "Abstract error" при создании Dataset


Автор: Данкинг 23.8.2008, 20:46
Код

procedure TForm1.N3Click(Sender: TObject);
t:tdataset;
begin
t:=tdataset.Create(self);
t.FieldDefs.Add('name',ftString,100);
t.FieldDefs.Add('kolvo',ftString,100);
t.Active:=false;
t.Active:=true;
t.Free;
end;


На t.Active:=true вылезает ошибка "Abstract error". В чём проблема?

Автор: ama_kid 23.8.2008, 22:23
Сразу бросаются в глаза фразы:
Цитата(Delphi Help)
DataSet contains abstract methods, and is not intended to be used in applications. Instead, applications instantiate dataset descendants such as TClientDataSet, TADODataSet, TTable, TQuery, TStoredProc, or TSQLDataSet.
Цитата(там же)
TDataSet introduces the basic properties, events, and methods for working with data. Many of these properties, events, and methods are abstract (Delphi) or pure virtual (C++) in TDataSet. Abstract or pure virtual declarations are declarations without implementations. At the TDataSet level they cannot be used or accessed. Developers must use or derive descendants of TDataSet that redeclare and implement these abstract or pure virtual methods. Many of the other TDataSet methods are declared and implemented in TDataSet as virtual methods, but the implementations are merely stubs that are reimplemented in descendants.
TDataSet has several descendants: TBDEDataSet, TCustomADODataSet, TIBCustomDataSet, TCustomSQLDataSet, and TCustomClientDataSet.
Воспользуйся наследниками, зачем TDataSet мучаешь? smile

Автор: Данкинг 23.8.2008, 22:35
С TClientDataSet такой ошибки не возникает, но задачи не решает. А задача изначально такая (если такое возможно вообще): создать таблицу, не связанную ни с какой физической таблицей на диске, и с ней работать, как с обычным dataset. Это реально?  smile 

Автор: remax 24.8.2008, 00:18
Это реально. Существует целая куча баз данных "в памяти" (например, dxMemData от DevExpres). Кроме того, всегда можно создать свой вариант (см., например, книгу Марко Кенту). 

Автор: Данкинг 24.8.2008, 00:24
Цитата(remax @  24.8.2008,  01:18 Найти цитируемый пост)
например, dxMemData от DevExpres

Дык, это компоненты устанавливать надо. В общем, думаю, создам для этого .mdb-файл, пусть валяется вместе с программой.  smile 

Автор: Bose 26.8.2008, 15:15
Данкинг, tdataset - абстрактный класс, который сам не содержит кода для работы с данными. Его бессмысленно создавать напрямую. Только через наследников. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)