我们有一个用Delphi 6 websnap编写的当前产品,我试图升级到delphi 2005下运行。 它使用ADO,运行时的错误是“未调用CoInitialize”。 我可以找到这个错误的唯一引用指向IntraWeb和一个叫做ServerController的东西,我不确定它与我有关。 任何数量的CoInitialize(nil)调用都没有效果。
我是否在浪费时间让它运行,或者是否有可能在2005年之前运行 - 或者在以后的版本中出现?
答案 0 :(得分:5)
CoInitialize
(例如,在通过ADO访问数据库的任何线程中)。默认情况下,它由Delphi在主线程中调用,但您需要在其他线程中显式调用它。
尝试在OnActivate
事件中调用它,并在CoUninitialize
事件中致电OnDeactivate
。
还要确保您的ADOTables和ADOConnections在设计时未打开。否则,应用程序将在您调用CoInitialize
之前尝试使用COM。
如果所有其他方法都失败了 - 请尝试覆盖Web表单的构造函数,然后在调用inherited之前将CoInitialize
放在那里。不要忘记在析构函数中调用CoUninitialize
。