2010-07-23 15 views
5

Uruchomimy aplikację DataSnap Delphi 2009 na Windows 2003 Server. Klient i serwer DataSnap są na tym samym komputerze, używając DCOM over Borland Socketserver. Klient uruchamia zadanie wsadowe w tle.Jak można pominąć okna dialogowe komunikatów o błędach DataSnap Delphi?

Czasami odkrywamy, że klient nie może połączyć się z aplikacją serwera i wyświetla okno dialogowe z komunikatem na pulpicie serwera wskazujące na przykład "Nie można połączyć się z serwerem." Nie można znaleźć ścieżki sieciowej. " lub "Nie znaleziono obiektu Objectexporter."

Nasz kod klienta Delphi nigdy nie używa okna dialogowego wiadomości do pokazywania błędów lub wyjątków, zamiast tego używamy try ... except .. finally ... end i logging do obsługi błędów connect, więc domyślam się, że dialog jest tworzony przez Metoda DataSnap. Czy istnieje sposób na powstrzymanie tego modalnego okna dialogowego?

Update: wszystkie wyjątki są obsługiwane w niższych procedur, najważniejsze pętli zajmuje odłączania i ponownego łączenia, gdy jest wyjątek (przetwarzane lub nieobsłużonego)

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

Odpowiedz

3

roztwór 1) być może GLOBAL haka nad application.onexception może poradzić sobie z problemem

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

roztwór 2)

użyj EurekaLog lub MadExcept, aby dowiedzieć się, skąd aplikacja zgłasza ten błąd i obsłużyć błąd.

rozwiązanie 3)

globalny hak na dialogach komunikat aplikacji, przykładem hak jest poniżej

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

kwerendy wszystkie wiadomości w aplikacji, a kiedy złapiesz to okno, a następnie przetworzyć wiadomość, a nie aplikacja. ponieważ nie mam teraz czasu, nie wiem dokładnie, które jest wage podniesione przez messagedlg.

nadzieję, że pomogło.

Pozdrawiam,

+0

Aplikacja używa logowania madExcept i wyjątku, wygląda na to, że nie pojawia się żaden wyjątek po wyświetleniu okna komunikatu o błędzie – mjn

Powiązane problemy