Additional
dbCAP
AnyDAC
ThinDAC
NCOCI8
Topic: AnyDAC и FPC
AnyDAC и FPC
Posted: 2007/10/31 06:56
 
Использую дистрибутив Lazarus-0.9.23-fpc-2.2.0-20071009-win32. Столкнулся с проблемой при открытии набора данных.


 procedure TADCustomConnection.AttachClient(AObjTObject); begin {$IFDEF AnyDAC_FPC}   if AObj is TADDataSet then     TADDataSet(AObj).DataBase := TDatabase(Self)


...
вызывает


 Procedure TDBDataset.SetDatabase (Value TDatabase); begin   ...     If Value<>Nil Then       Value.RegisterDataset(Self);   ... end;



и, соответственно,


 procedure TDatabase.RegisterDataset (DS TDBDataset); Var longint; begin   I:=FDatasets.IndexOf(DS);   ... end;



Но конструктор класса TDataBase не вызывался, т.к. TADCustomConnection наследуется напрямую от TCustomConnection. Поэтому объект FDatasets не создан, и как следствие - Access Violation.

Т.е. не ясно, как в принципе компоненты могут работать?
Re:AnyDAC и FPC
Posted: 2007/10/31 11:29
 
Привет

Могли бы вы предоставить тестовый пример ?

Удачи,
Дмитрий
Re:AnyDAC и FPC
Posted: 2007/11/01 01:32
 
Проблема возникает даже при работе Demo-примера FPCdemoComp LayerTADQueryMasterDetail..

Видимо, проблема в изменениях, внесенных в компилятор FPC.
Ранее (версия 2.0.4) классы были объявлены так:

  TDatabase = class(TComponent)   TCustomConnection = class(TDatabase)



А в версии 2.2.0 наоборот:

  TCustomConnection = class(TComponent)   TDatabase = class(TCustomConnection)



Еще точнее - проблема возникает уже на этапе компиляции, т.к. тип TFieldType был расширен значениями ftFixedWideChar, ftWideMemo.

Post edited by: YUriPro, at: 2007/11/01 01:38
Re:AnyDAC и FPC
Posted: 2007/11/01 22:08
 
Привет

Понял, спасибо. Исправлю.

Удачи,
Дмитрий
Re:AnyDAC и FPC
Posted: 2007/11/02 02:54
 
Спасибо вам. Будем ждать.