将websnap app升级到delphi 2005 - CoInitialize错误

时间:2011-05-25 11:11:12

标签: delphi ado

我们有一个用Delphi 6 websnap编写的当前产品,我试图升级到delphi 2005下运行。 它使用ADO,运行时的错误是“未调用CoInitialize”。 我可以找到这个错误的唯一引用指向IntraWeb和一个叫做ServerController的东西,我不确定它与我有关。 任何数量的CoInitialize(nil)调用都没有效果。

我是否在浪费时间让它运行,或者是否有可能在2005年之前运行 - 或者在以后的版本中出现?

1 个答案:

答案 0 :(得分:5)

需要在执行COM访问的线程内调用

CoInitialize(例如,在通过ADO访问数据库的任何线程中)。默认情况下,它由Delphi在主线程中调用,但您需要在其他线程中显式调用它。

尝试在OnActivate事件中调用它,并在CoUninitialize事件中致电OnDeactivate

还要确保您的ADOTables和ADOConnections在设计时未打开。否则,应用程序将在您调用CoInitialize之前尝试使用COM。

如果所有其他方法都失败了 - 请尝试覆盖Web表单的构造函数,然后在调用inherited之前将CoInitialize放在那里。不要忘记在析构函数中调用CoUninitialize