开发过indy以及用过ADO的,请进来帮一下忙!该如何处理

开发过indy以及用过ADO的,请进来帮一下忙!
我用的是indy9,在IdTCPServer的OnExecute事件内。使用ADO。对SQL进行统计。

ADOConnection_Auto = new TADOConnection(NULL);
ADOQuery_Auto = new TADOQuery(NULL);

ADOConnection_Auto->Close();
ADOConnection_Auto->LoginPrompt = false;
ADOConnection_Auto->ConnectionString = ADOConnection_ok->ConnectionString;
ADOConnection_Auto->Open();

ADOQuery_Auto->Connection = ADOConnection_Auto;

这里是代码,使用ADOQuery。

try
{
  //下面准备销毁这些
  ADOQuery_Auto->Close();
  ADOConnection_Auto->Close();

  delete ADOQuery_Auto;
  delete ADOConnection_Auto;
}
catch(...)
{
  Write_LOG("删除ADO出错!");
}


//不知道上面的做法怎么不正确。会出很多"删除ADO出错!"的日志。

------解决方案--------------------
用ADOQuery_Auto->Free()
------解决方案--------------------
楼主的这段代码看不出错误,检查其他地方吧
是不是
try
{
//这里还有代码,这里出错的?
//下面准备销毁这些
ADOQuery_Auto->Close();
...
------解决方案--------------------
你这个try...catch用的不合适。应该这样用:
C/C++ code
ADOConnection_Auto = new TADOConnection(NULL);
ADOQuery_Auto = new TADOQuery(NULL);

try
{
    try
    {
        ADOConnection_Auto->Close();
        ADOConnection_Auto->LoginPrompt = false;
        ADOConnection_Auto->ConnectionString = ADOConnection_ok->ConnectionString;
        ADOConnection_Auto->Open();

        ADOQuery_Auto->Connection = ADOConnection_Auto;

        // 这里是代码,使用ADOQuery。
    }
    catch(...)
    {
        Write_LOG("删除ADO出错!");
    }
}
__finally
{
    ADOQuery_Auto->Close();
    ADOConnection_Auto->Close();

    delete ADOQuery_Auto;
    delete ADOConnection_Auto;
}

------解决方案--------------------
你这样子try...catch,如果中间有代码执行出错,会有内存的泄露的可能啊。不信你加个断点试试,如果中间有代码出错,delete ADOQuery_Auto未必能执行到。

try...finally组合可以保证finally段内的代码即使前面有异常也能正常执行到。
------解决方案--------------------
为什么在catch之后不记录下来具体的错误内容呢?
------解决方案--------------------
这些办法都是不能解决根源的;
断点调试一下,看看具体错误在哪里,然后修改之
不然始终会出大问题的