Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Проблема с динамическим созданием компонента


Автор: SATYR 5.7.2005, 15:35
В потоке пытаюсь динамически создать TADODataSet
Код

void __fastcall TQueryListThread::Execute()
{
TADODataSet * Q = new TADODataSet(NULL);
 Q->Connection = RepMast->ADOConnection1;
 Q->CursorLocation=clUseServer;
 Q->CursorType=ctDynamic;
 try
   {
    Synchronize(CaseQueryAndOpen);
   }
   __finally
   {
     delete Q;
   }
}


В итоге после компиляции выскакивает Code Guard и пишет "Method called on illegally casted object".
Выскакивает на строке TADODataSet * Q = new TADODataSet(NULL);.
Что это значит, из-за чего это может быть ?

Автор: _hunter 5.7.2005, 16:12
это значит глюк VCL и делать с ним ничего не надо...

Автор: chaos 6.7.2005, 07:43
а если какнить так попробовать
TADODataSet * Q = new TADODataSet(this);?

Автор: Guest 6.7.2005, 09:43
какнить так не проходит говорит "TQueryListThread.cpp(32): E2285 Could not find a match for 'TADODataSet::TADODataSet(TQueryListThread * const)' "

Автор: chaos 6.7.2005, 10:08
билдера нет под рукой проверить не могу
вот что то еще нашел
1.11. I am trying to use Adonis in a multithreaded application /in a service/ in a CGI or WinCGI application. How do I solve the 'CoInitialize has not been called' error?

CoInitialize prepares you application to instantiate COM objects. In a normal application Delphi handles this for you. Sometimes you may have to do this manually. In each thread you need to call CoInitialize and CoUninitialize:

uses ActiveX;

procedure MyThread.Execute;
begin
CoInitialize(nil);
try
// your code
finally
CoUninitialize;
end;
end;

Добавлено @ 10:08
если не то, не бейте по голове smile

Автор: _hunter 6.7.2005, 10:32
ок. не будем smile

Автор: Guest 6.7.2005, 10:37
Чесно. Не помогло .
А что они делают CoInitialize(nil); CoUninitialize; ?

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