2010-07-23 8 views
5

Wir führen eine DataSnap Delphi 2009-Anwendung auf Windows 2003 Server. DataSnap Client und Server befinden sich auf demselben Computer und verwenden DCOM über Borland Socketserver. Der Client führt einen Batch-Hintergrundjob aus.Wie kann ich Delphi DataSnap Fehlermeldungen unterdrücken?

Manchmal stellen wir fest, dass der Client keine Verbindung zur Serveranwendung herstellen kann und zeigt auf dem Server-Desktop ein Meldungsdialogfeld mit der Meldung "Verbindung zum Server konnte nicht hergestellt werden. Netzwerkpfad wurde nicht gefunden." oder "Objectexporter nicht gefunden."

Unser Delphi-Client-Code verwendet nie einen Meldungsdialog, um Fehler oder Ausnahmen anzuzeigen, stattdessen verwenden wir try ... except .. finally ... end und logging, um Verbindungsfehler zu behandeln, also denke ich, dass der Dialog von a erstellt wird DataSnap-Methode. Gibt es eine Möglichkeit, dieses modale Dialogfeld zu unterdrücken?

Update: alle Ausnahmen in der unteren Ebene Routinen gehandhabt werden, nimmt die Hauptschleife Pflege des Trennens und Wiederverbindung, wenn eine Ausnahme (behandelt oder unbehandelt) angehoben wird:

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

Antwort

3

Lösung 1) vielleicht ein global hook über die application.onexception das Problem

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

Lösung 2) handhaben kann

Verwenden Sie EurekaLog oder MadExcept, um herauszufinden, von wo die Anwendung diesen Fehler auslösen und den Fehler behandeln.

Lösung 3)

ein globaler Haken über die Anwendungsnachricht Dialoge, ein Haken Beispiel ist unten

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

Sie abfragen, um alle Nachrichten der Anwendung, und wenn man das Fenster fangen dann verarbeiten Sie die Nachricht nicht die Anwendung. weil ich jetzt nicht die zeit habe weiß ich nicht genau welche wmittage von messagedlg ausgelöst wird.

hoffe, dass geholfen hat.

freundlichen Grüßen

+0

Die Anwendung MadExcept und Ausnahmeprotokollierung verwendet, sieht es wie keine Ausnahme ausgelöst wird, wenn die Fehlermeldung Feld angezeigt – mjn

Verwandte Themen