2010-07-23 32 views
5

Nous exécutons une application DataSnap Delphi 2009 sur Windows 2003 Server. DataSnap Client et Server sont sur le même ordinateur, en utilisant DCOM sur Borland Socketserver. Le client exécute un travail par lots en arrière-plan. Parfois, nous découvrons que le client ne peut pas se connecter à l'application serveur et affiche une boîte de dialogue de message sur le bureau du serveur indiquant par exemple "Impossible de se connecter au serveur, le chemin réseau est introuvable". ou "Objectexporter introuvable". Notre code client Delphi n'utilise jamais de boîte de dialogue pour afficher les erreurs ou les exceptions. Au lieu de cela, nous utilisons try ... except ... finally ... end et logging pour gérer les erreurs de connexion, donc je suppose que le dialogue est créé par un DataSnap méthode. Existe-t-il un moyen de supprimer cette boîte de dialogue modale?Comment puis-je supprimer les boîtes de dialogue de message d'erreur Delphi DataSnap?

Mise à jour: toutes les exceptions sont gérées dans les routines de niveau inférieur, la boucle principale prend soin de débranchant et rebranchant lorsqu'une exception est soulevée (traitée ou non prise en charge): solution

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

Répondre

3

1) peut-être un crochet global sur la application.onexception peut gérer le problème

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

solution

2)

utiliser EurekaLog ou MadExcept afin de savoir d'où l'application soulève cette erreur, et gérer l'erreur.

solution 3)

un crochet global sur les boîtes de dialogue de message d'application, un exemple de crochet est ci-dessous

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

vous interrogez tous les messages de l'application, et quand vous attrapez cette fenêtre vous traitez le message n'est pas l'application. parce que je n'ai pas maintenant le temps je ne sais pas exactement quel est le message soulevé par messagedlg.

espérons que cela a aidé. Cordialement,

+0

L'application utilise madExcept et la journalisation des exceptions, il semble qu'aucune exception n'est levée lorsque le message d'erreur apparaît – mjn