Как я могу подавить сообщения об ошибках Delphi DataSnap? - PullRequest
5 голосов
/ 23 июля 2010

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

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

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

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

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

1 Ответ

3 голосов
/ 23 июля 2010

решение 1) может быть, глобальный перехват приложения.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.

надеюсь, что это помогло.

С наилучшими пожеланиями,

...