2010-07-23 7 views
5

Мы запускаем приложение DataSnap Delphi 2009 на Windows 2003 Server. Клиент и сервер DataSnap находятся на одном компьютере, используя DCOM через Borland Socketserver. Клиент выполняет фоновое пакетное задание.Как я могу подавить диалоги сообщений об ошибках Delphi DataSnap?

Иногда мы обнаруживаем, что клиент не может подключиться к серверному приложению и отображает диалоговое окно сообщения на рабочем столе сервера, например, «Не удалось подключиться к серверу. Не удалось найти сетевой путь». или «Objectexporter не найден».

Наш клиентский код Delphi никогда не использует диалоговое окно с сообщением об ошибках или исключениях, вместо этого мы используем try ... except .. finally ... end и logging для обработки ошибок соединения, поэтому, я думаю, диалог создается с помощью Метод DataSnap. Есть ли способ подавить это модальное диалоговое окно?

Обновление: все исключения обрабатываются в более низких подпрограмм уровня, основной цикл берет на отключение и повторное подключение, когда возникает исключение (обрабатывается или необработанное):

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

ответ

3

раствор 1) может быть, глобальный крюк над application.onexception могут справиться с этой проблемой

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

раствор 2)

используйте EurekaLog или MadExcept, чтобы узнать, откуда приложение поднимает эту ошибку и обрабатывает ошибку.

раствор 3)

глобальный крюк над диалогами сообщений приложения, пример Крючок ниже

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

вы запрашиваете все сообщения приложения, и когда вы поймете, что окно, то вы обрабатываете сообщение не приложение. потому что у меня нет времени, когда я точно не знаю, что такое wmessage, поднятый messagedlg.

желающий эта помогло.

С уважением,

+0

Приложение использует журнал madExcept и регистрации исключений, похоже, что при появлении сообщения об ошибке появляется исключение – mjn