Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Использование объектов в своем классе типа TADOQuery

3.0K
21 августа 2005 года
GoldMan
104 / / 15.08.2005
Ребята есть класс. вот его код
 
Код:
class TcFillCbo
{
  private:
    TADOQuery *qCBO;
  public:
    void GetCboLoc(TComboBox *cboLoc);
    void GetCboJud(TComboBox *cboJud, int idLoc);
    TcFillCbo(void);
};

что еще нужно сделать чтобы в функции GetCboLoc(TComboBox *cboLoc) можно было работать с объектом qCBO
вот код функции:
Код:
void TcFillCbo::GetCboLoc(TComboBox *cboLoc)
{
  cboLoc->Clear();
  cboLoc->Items->Add("Новое место");
  qCBO->Close();
  qCBO->SQL->Clear();
  qCBO->SQL->Add("SELECT NameLoc FROM TLoc");
  qCBO->Open();

  for (int i=0;i<qCBO->RecordCount;i++)
  {
    cboLoc->Items->Add(qCBO->FieldValues["NameLoc"]);
    qCBO->Next();
  }
}

во время выполнения программа на строке
qCBO->Connection = frmMain->ADOConGen;
выдает [COLOR=red]Access violation[/COLOR]
т.е. адрес объекта есть, а его тела нет... я так понимаю.
подскажите что делать?
310
21 августа 2005 года
fellow
853 / / 17.03.2003
Добавь к своему классу конструктор, и в этом конструкторе инициализируй член qCBO.
3.0K
21 августа 2005 года
GoldMan
104 / / 15.08.2005
Цитата:
Originally posted by fellow
Добавь к своему классу конструктор, и в этом конструкторе инициализируй член qCBO.


как инициализировать?
вот мой конструктор

 
Код:
TcFillCbo::TcFillCbo()
{
  qCBO->Connection = frmMain->ADOConGen;
}

вот что я писал типа по моим понятиям я инициализирую
 
Код:
TcFillCbo::TcFillCbo()
{
  qCBO = new TADOQuery;
  qCBO->Connection = frmMain->ADOConGen;
}


только в этом случае вот что за ошибка мне выскакивет
[COLOR=red][C++ Error] unitOurClasses.cpp(9): E2285 Could not find a match for 'TADOQuery::TADOQuery()'[/COLOR]
подскажи если правильно
если нет то подскажи как правильно...
362
21 августа 2005 года
_kolyan
339 / / 03.12.2002
Очевидно у объекта должен быть владелец, которого надо указать в конструкторе. А что в справке про ADOQuery и параметры его конструктора ничего нет?
310
22 августа 2005 года
fellow
853 / / 17.03.2003
_kolyan прав. Конструктор TADOQuery требует параметра. Читай справку внимательно.
585
22 августа 2005 года
honeybeer
297 / / 06.09.2004
помимо всего прочего, вы не пробовaли воспользоваться операцией new :-? :D
585
22 августа 2005 года
honeybeer
297 / / 06.09.2004
Цитата:
Originally posted by honeybeer
помимо всего прочего, вы не пробовaли воспользоваться операцией new :-? :D


ага, вижу пробовали, смотрим F1 TADOQuery

Цитата:
Creates an instance of a TADOQuery component.

__fastcall virtual TDataSet(Classes::TComponent* AOwner);

Description

Call TADOQuery indirectly, using the new keyword, to instantiate an ADO query component at runtime. Query components placed in forms or data modules at design time are created automatically.

3.0K
24 августа 2005 года
GoldMan
104 / / 15.08.2005
Ребята, спасибо за участие, но до меня так и не дошло как ето дело делать...

Дайте пожалуйста живой пример простого своего класса, в котором будет работать ADOQuery.
362
25 августа 2005 года
_kolyan
339 / / 03.12.2002
Цитата:
Originally posted by GoldMan
Ребята, спасибо за участие, но до меня так и не дошло как ето дело делать...



У-у-у-у... как все запущено... ((с) др. Шац)

class TMyClass
{
private:
TADOQuery* MyQuery;
publuc:
TMyClass();
~TMyClass();
}

... прошло время

TMyClass::TMyClass
{
//в качестве владельца берем, что под руку попалось, главно чтоб VCL'ное
MyQuery = new TADOQuery(Application);
MyQuery->Connection = ...
}

TMyClass::~TMyClass()
{
MyQuery->Free;
}

вот наваял
и не лень же мне было? :)

10
25 августа 2005 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by _kolyan
{
//в качестве владельца берем, что под руку попалось, главно чтоб VCL'ное


Н-да, запущено действительно сильно! Никогда так не делайте! Если владелец не определен, надо передавать NULL, и все. Только освобождать экземляр вручную придется. Собственно, для чего и создается класс.

362
25 августа 2005 года
_kolyan
339 / / 03.12.2002
Цитата:
Originally posted by Freeman
Н-да, запущено действительно сильно! Никогда так не делайте! Если владелец не определен, надо передавать NULL, и все. Только освобождать экземляр вручную придется. Собственно, для чего и создается класс.



И чем вам не нравится Application - из эстетики или из практики? Еще ни ни разу у меня ничего не завалилось при таком владельце :)

299
25 августа 2005 года
3D Bob
885 / / 18.04.2005
Цитата:
Originally posted by _kolyan
И чем вам не нравится Application - из эстетики или из практики? Еще ни ни разу у меня ничего не завалилось при таком владельце :)



Не понравилось твоё "что под руку попадется"=)
и фриман прав. NULL всегда рулил и будет рулить.

3.0K
25 августа 2005 года
GoldMan
104 / / 15.08.2005
Цитата:
Originally posted by 3D Bob
Не понравилось твоё "что под руку попадется"=)
и фриман прав. NULL всегда рулил и будет рулить.


Ребята... благодарствую... все... в норме... просто никак не мог определиться с папашей...
Сейчас сделали анализ ДНК и все в норме... зарулило...

362
26 августа 2005 года
_kolyan
339 / / 03.12.2002
Цитата:
Originally posted by 3D Bob
Не понравилось твоё "что под руку попадется"=)



Не ну это я так - для красного словца :). Естественно разные близлежащие буттоны и едиты и т.п. не стоит указывать. Просто не люблю безхозных компонент.

10
26 августа 2005 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by _kolyan
Просто не люблю безхозных компонент.


Программируешь ты тоже по любви-нелюбви? Любовь понятие иррациональное и с программированием согласуется плохо. Для лечения советую прочитать вначале про идеологию использования Owner-ов в TCompoment.

362
26 августа 2005 года
_kolyan
339 / / 03.12.2002
Цитата:
Originally posted by Freeman
Программируешь ты тоже по любви-нелюбви? Любовь понятие иррациональное и с программированием согласуется плохо. Для лечения советую прочитать вначале про идеологию использования Owner-ов в TCompoment.



Исключительно по любви и никак иначе :)
Как бы то ни было, проблем с тем кому какого владельца назначить у меня никогда не возникало, и NULL тоже если нужно, так что потребности в лечении не испытываю ;)
А вообще это уже треп пошел - как я понял проблема-то решена.

10
26 августа 2005 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by _kolyan
А вообще это уже треп пошел - как я понял проблема-то решена.


Угу. Надо же от работы как-то лечиться. :D

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог