错了,3应该是“只加一个MessageBox()”

解决方案 »

  1.   

    应该是错误类型不是EDatabaseError的缘故。
      

  2.   

    写成
     Application.MessageBox('连接指定的数据源时发生错误,错误信息:' + E.Message, '错误',  MB_OK + MB_ICONHAND + MB_DEFBUTTON1 + MB_APPLMODAL);
      

  3.   

    To chao_jian(升级中...):请问应该怎样判断错误类型?To pazee(耙子):我这样写了,效果和上面的一样。
      

  4.   

    问题解决,用Liujc(阿聪)的办法解决的。
    改正后的程序如下:
    try
    ……
    except
    on E:exception do
        begin
          ErrorMessage := '连接指定的ODBC数据源时发生错误!' + #10 + #13 + '错误信息:' + E.Message;
        Application.MessageBox(PChar(ErrorMessage), '错误信息',
        MB_OK + MB_ICONHAND + MB_DEFBUTTON1 + MB_APPLMODAL);
        end;
    end;还有几个疑问:1.在作try...except...中应该怎样判断会发生什么错误类型?2.在except段中显示错误信息时,是否我自己的错误信息会屏蔽掉系统错误信息?或者说在except段中错误信息的显示是不是有一个优先权的问题?
      

  5.   

    原因就是adoConnect的错误类型不是 EDatabaseError,而是EOldException所以你要写成这样try
      begin
        ADOConnection.Connected := False;
        ADOConnection.ConnectionString := '……' //在这里设定连接字符串
        ADOConnection.Connected := True;
      end;
    except
      on E: EOldException do
        begin
          ErrorMessage := '连接指定的数据源时发生错误,错误信息:' + E.Message;
          Application.MessageBox(PChar(ErrorMessage), '错误',
               MB_OK + MB_ICONHAND + MB_DEFBUTTON1 + MB_APPLMODAL);
        end;
    end;
    用 Exception 也行,
    不过这个太泛泛了,当有可能多个语句出现异常的释后很难正确的区分异常类型。但是
    adotable 和
    adoquery的异常类型又是EDatabaseError了
      

  6.   

    更证是 EOleException !!!