CBuilder

отредактировано 02:04 Раздел: FastReport 3.0
Поставил 3.01. Начал на С++ делать свои компоненты доступа к данным. Все как описано в мануале, только с переложением на С. Попытка запуска - свал. Нашел интереснейший код:

constructor TfrxCustomQuery.Create(AOwner: TComponent);
begin
inherited;
FParams := TfrxParams.Create;
// Вот это:
DataSet.BeforeOpen := OnBeforeOpen;

FSaveOnChange := TStringList(SQL).OnChange;
TStringList(SQL).OnChange := OnChangeSQL;
end;

я создаю потомка TfrxCustomQuery. В своем конструкторе, я вызываю базовый. Поскольку это все-таки С, то естественно, до входа в мой конструктор, исполняется базовый. DataSet еще не определен, т.к. мой конструктор не исполнялся. В итоге - свал. Дальше - больше:
constructor TfrxCustomDataset.Create(AOwner: TComponent);
begin
Component := Dataset;
inherited;
FDataSource := TDataSource.Create(nil);
// Вот это:
SetMaster(FDataSource);
end;

Вызов виртуальной функции в моем объекте до выполнения его конструктора ;) .

Полез за решением:
constructor TfrxADOQuery.Create(AOwner: TComponent);
begin
FQuery := TADOQuery.Create(nil);
Dataset := FQuery;
SetDatabase(nil);
// Вот это:
inherited;

FImageIndex := 39;
end;

Так в С не пишут.

Вывод: покупай Делфи? Бросай С? А если весь проект на С, включать туда модуль на паскале?

Комментарии

  • отредактировано 02:04
    > Так в С не пишут.

    А в Делфи - вполне нормально. Все-таки FR3 написан на Делфи, и переделывать его под С нет возможности. Выход у Вас только один - писать подключаемый модуль на Паскале.
  • отредактировано 02:04
    > Вас только один - писать подключаемый модуль на Паскале
    ;)

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.