2010-07-23 24 views
5

Ejecutamos una aplicación DataSnap Delphi 2009 en Windows 2003 Server. DataSnap Client y Server están en la misma computadora, usando DCOM sobre Borland Socketserver. El cliente ejecuta un trabajo por lotes en segundo plano.¿Cómo puedo suprimir los cuadros de diálogo de los mensajes de error de Delphi DataSnap?

A veces, descubrimos que el cliente no puede conectarse a la aplicación del servidor y muestra un cuadro de diálogo de mensaje en el escritorio del servidor que indica por ejemplo "No se pudo conectar al servidor. No se pudo encontrar la ruta de red". o "Objectexporter not found".

Nuestro código de cliente Delphi nunca usa un diálogo de mensaje para mostrar errores o excepciones, en su lugar usamos try ... excepto ... finally ... end y logging para manejar los errores de conexión, así que supongo que el diálogo está creado por un Método DataSnap ¿Hay alguna manera de suprimir este cuadro de diálogo modal?

Actualización: todas las excepciones se manejan en las rutinas de bajo nivel, el bucle principal se encarga de desconectar y volver a conectar cuando se produce una excepción (manipulado o no controlada):

while True do 
    begin 
    Connect; 
    while True do 
    begin 
     try 
     DoMyWork; 
     except 
     Break; 
     end; 
    end; 
    Disconnect; 
    end; 

Respuesta

3

solución 1) tal vez un enlace global sobre el application.onexception puede manejar el problema solución

http://www.chami.com/tips/delphi/011497D.html

2)

use EurekaLog o MadExcept para averiguar desde dónde la aplicación genera ese error y maneje el error.

solución 3)

un gancho global durante los diálogos de mensajes de aplicación, un ejemplo de gancho es abajo

http://delphi.about.com/gi/o.htm?zi=1/XJ&zTi=1&sdn=delphi&cdn=compute&tm=43&f=22&su=p284.9.336.ip_p504.1.336.ip_&tt=2&bt=1&bts=1&zu=http%3A//www.delphicorner.f9.co.uk/articles/apps7.htm

se consulta todos los mensajes de la aplicación, y cuando se captura esa ventana y luego se procesa el mensaje, no la aplicación porque ahora no tengo el tiempo, no sé exactamente cuál es la opinión que plantea messagedlg.

espero que haya ayudado.

mejores deseos,

+0

La aplicación utiliza madExcept y registro excepción, parece que no es una excepción es lanzada cuando aparezca el cuadro de mensaje de error – mjn

Cuestiones relacionadas