IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants VCL Delphi Discussion :

[TCP/Indy] Comment désactiver les messages lorsque tout s'est bien passé ?


Sujet :

Composants VCL Delphi

  1. #1
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 190
    Points : 83
    Points
    83
    Par défaut [TCP/Indy] Comment désactiver les messages lorsque tout s'est bien passé ?
    Bonsoir,

    J'ai implémenté un système de communication tout simple par TIdTcpServer et TIdTcpClient, composants indy.

    Tout fonctionne (presque) bien...

    Quelque chose pourtant me dérange...

    Lorsque je déconnecte mon client, je n'arrive pas à me débarasser d'un message popup qui m'affiche : "La connexion s'est terminée proprement".

    Bon, c'est gentil de sa part de m'en informer, mais si je pouvais me passer de ce message, je serai bien content...

    Savez-vous comment faire :

    Jbat.

  2. #2
    Membre chevronné
    Avatar de Pierre Castelain
    Inscrit en
    Avril 2002
    Messages
    523
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 523
    Points : 1 943
    Points
    1 943
    Par défaut
    Normalement, cette exception qui signale une fin normale de la connexion n'est visible que lorsque le programme est exécuté depuis l'IDE.
    Si jamais cela te pose un problème, tu peux ajouter EIdSilentException comme type d'exception à ignorer dans les options du débogueur.

  3. #3
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 190
    Points : 83
    Points
    83
    Par défaut
    Pourtant, lorsque je lance mon application en tant que client sur un autre poste (le serveur étant le même executable lancé sur le poste où j'ai delphi, mais non à partir de delphi), à la déconnexion, j'obtiens toujours le même message...

  4. #4
    Membre du Club

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 43
    Points : 48
    Points
    48
    Par défaut
    C'est bien le client qui affiche ce message ? Je me demande si ton client n'est pas déjà déconnecté et que tu tentes de te déconnecter une 2ème fois.

    Je suis peut-être totalement à côté de la plaque mais, typiquement, moi, quand je fais un connect, j'ai toujours un truc du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    try
      try
        IdTCPClient.Connect;
        [...] 
      except
        [...]
      end;
    finally
      if IdTCPClient.Connected then
        IdTCPClient.Disconnect;
    end;
    J'ai déjà rencontré ce message à une époque (lointaine ) mais dans le programme dans lequel je viens de recopier ce code, je ne l'ai jamais eu.

    A voir ...

  5. #5
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 190
    Points : 83
    Points
    83
    Par défaut
    Voici ma prodédure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    procedure TForm1.Button11Click(Sender: TObject);
        begin
            with IdTCPClient1 do
            begin
                Host := Edit11.Text;
                Port := StrToint(Edit22.Text);
                try
                    Connect;
                    lbCommunication.Items.Add(idTCPClient1.ReadLn);
                    except on E : EIdTCPConnectionError do
                        ShowMessage(UpperCase(E.Message));
                end;
            end;
        end;
    Mais cependant, j'ai remarqué quelque chose d'étrange... Quand je fait mon connect en pas à pas, le curseur disparait après l'execution de la ligne "readln()". Le programme ne semble pas bloqué, la listbox affiche bien le message de bienvenue que mon serveur envoie au client à sa connexion, mais pourtant, le curseur pas à pas disparait... Et lorsque je déconnecte, bizzarement, mon curseur pas à pas réapparait à la ligne qui suit le "readln" où il avait disparu... ?!

    Pensez-vous que ça puisse être lié ?

  6. #6
    Membre du Club

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 43
    Points : 48
    Points
    48
    Par défaut
    si je comprend bien, dans le OnConnect du serveur, il y a un WriteLn avec un message de bienvenue. C'est à la réception de celui-là sur le client qu'il y a un problème.

    Il faudrait peut-être découper les 2 lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    chaineRecue := idTCPClient1.ReadLn;
    lbCommunication.Items.Add(chaineRecue);
    et ainsi vérifier que c'est bien le ReadLn qui bloque.

    Une précision, le readln n'est pas effectué plusieurs fois sur le client (plusieurs appuis sur le bouton, Button11Click appelé ailleurs, ReadLn appellé ailleurs, ...) ?

  7. #7
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 190
    Points : 83
    Points
    83
    Par défaut
    Tu as raison, je faisais également mon readln dans le OnConnect du client. Du coup, il bloquait en attente de quelque chose à lire. J'ai supprimé le readln en trop et du coup, j'ai résolu mes deux problèmes...

    Ma connexion n'est plus "faussement" bloquante et à la déconnexion, je n'ai plus le message "la connexion s'est terminée proprement"...

    Un grand merci !

    Jbat.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] Comment désactiver les messages d'erreur/information?
    Par BornToBe dans le forum VBA Access
    Réponses: 4
    Dernier message: 03/07/2012, 18h00
  2. Comment désactiver les messages des exceptions
    Par hastiok dans le forum Langage
    Réponses: 4
    Dernier message: 02/12/2009, 12h02
  3. Comment afficher les lignes lorsque la valeur est vide ?
    Par matimat2k4 dans le forum Langage SQL
    Réponses: 24
    Dernier message: 02/04/2008, 17h29
  4. Comment sauvegarder les messages de Outlook express ?
    Par tarbala dans le forum Outlook Express / Windows Mail
    Réponses: 5
    Dernier message: 06/08/2004, 18h31
  5. comment recuperer les messages
    Par devalender dans le forum Débuter
    Réponses: 2
    Dernier message: 17/06/2004, 20h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo