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

Delphi Discussion :

[IdWhois] Connect Timed Out


Sujet :

Delphi

  1. #1
    Membre habitué
    Avatar de xenos
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 400
    Points : 197
    Points
    197
    Par défaut [IdWhois] Connect Timed Out
    Bonjour,

    Je développe un soft avec Delphi 2006 et Indy 10 sous WinXP.

    Je me connecte à un whois sur internet à l'aide d'IdWhois d'Indy 10. Le problème survient lorsque le serveur whois est trop demandé, le composant n'arrivant pas à se connecter au Whois pendant le temps imparti, renvoie un message d'erreur et fait planter l'application.

    J'aimerais supprimer ce message d'erreur et envoyer une simple mise en garde à l'utilisateur lui disant que sa requête n'a pas pu être traitée.

    J'ai bien imaginé plusieurs possibilités mais rien n'y fait ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Procedure [...]
    var
      WhoIs : TIdWhois;
      Resultat : String;
     
    begin
      WhoIs := TIdWhois.Create;
      WhoIs.Port := 43;
      WhoIs.Host := 'whois.truc';
     
      If (WhoIs.Connected = True) then
        begin
          Resultat := WhoIs.WhoIs(AString);
        end
      Else
        begin
          Resultat := '91';
        end;
     
      WhoIs.Free;
     
    [...]
    D'avance merci pour votre aide.

  2. #2
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut

    entoure ton code d'un bloc try except comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    try
      Resultat := WhoIs.WhoIs(AString);
    except
      //traitement de l'erreur
      //on TypeErreurGérée do
      on EIdException do //je crois bien que c'est EIdException mais je suis pas sur :roll:
        //afficher une boite de message ?
    end;
    je te conseille aussi de lire la doc d'indy10 où l'on donne des conseils sur l'usage général des composants

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 343
    Points : 392
    Points
    392
    Par défaut
    Le message d'erreur au debogage te renverra le type d'exception, mais qu'il prevoit aussi un timeOut, sinon rien de plus penible d'attendre indefiniment....
    Tu peux céer toi même ton type exception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      type EMonErreurAMoi = class(Exception);
    comme cela tu intercepteras l'erreur. Lire Aide Delphi et peut être dans les FAQ. C'est encore plus propre.
    Tu peux recuperer le message par E.message, avec E comme classe d'exception comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    try...
    except 
     on E:EDivByZero do
       MessageDlg(E.Message, mtError, [mbOK],0);
    end;

  4. #4
    Membre habitué
    Avatar de xenos
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 400
    Points : 197
    Points
    197
    Par défaut
    Ce que je ne comprend pas c'est que c'est une erreur connue par Delphi, vu qu'il me renvoie lors de la compilation cette erreur :

    Project project1.exe raided exception class EIdConnectTimeout with message 'Connect timed out'.
    De ce fait lorsque j'écris le code suivant, il ne devrait pas me renvoyer d'erreur ... 'fin il me semble ... :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      try
        Info := LowerCase(WhoIs.WhoIs('Get 1.0 ' + AString));
      except
        on E:EIdConnectTimeout do
          Resultat := '91';
      end;
    ... j'ai rajouté dans les uses IdException ...

    Citation Envoyé par tatareau
    Tu peux céer toi même ton type exception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    type EMonErreurAMoi = class(Exception);
    Malgré que l'erreur soit reconnu par Windows je dois la créer ? Un simple code "Standart" ne fonctionne pas ?

  5. #5
    Membre habitué
    Avatar de xenos
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 400
    Points : 197
    Points
    197
    Par défaut
    D'après mes recherches sur internet, ça devrait bien fonctionner, comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    try
      [...]
    except
      on EIdConnectTimeout do
        begin
          [...]
        end;
    end;
    Du moins c'est ce que j'ai pu trouver sur les rares sites qui parlent de l'erreur : EIdConnectTimeout:
    - http://www.delphimaster.ru/cgi-bin/f...1149062835&n=4
    - http://www.delphipraxis.net/topic20376.html

    Le problème vient peut-être du fait que je lance le composant IdWhois non pas dans une form, mais dans une dll ...

    En fait lorsque je lance le soft normallement, directement à partir de l'exe, il n'y a pas de problème, il m'envoit le result := 91. Mais lorsque je lance le soft à partir de Delphi, lorsque je le compile, là il me lance l'erreur dont je parle dans le post précédent ...

  6. #6
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut
    Citation Envoyé par xenos
    En fait lorsque je lance le soft normallement, directement à partir de l'exe, il n'y a pas de problème, il m'envoit le result := 91. Mais lorsque je lance le soft à partir de Delphi, lorsque je le compile, là il me lance l'erreur dont je parle dans le post précédent ...
    cela veux tout simplement dire que débogueur est configuré comme tel.
    change la configuration par : Outils -> Options du débogueur -> Exceptions du langage -> Arrêt sur exceptions delphi , décoche cette case à cocher

  7. #7
    Membre habitué
    Avatar de xenos
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 400
    Points : 197
    Points
    197
    Par défaut
    Citation Envoyé par evarisnea
    cela veux tout simplement dire que débogueur est configuré comme tel.
    change la configuration par : Outils -> Options du débogueur -> Exceptions du langage -> Arrêt sur exceptions delphi , décoche cette case à cocher
    Merci pour ton aide.

    Donc mon code était bon, ça me soulage.

  8. #8
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut
    Citation Envoyé par xenos
    Merci pour ton aide.

    Donc mon code était bon, ça me soulage.
    ya pas de quoi

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

Discussions similaires

  1. java.net.ConnectException: Connection timed out: connect
    Par FrenchFrogger dans le forum Services Web
    Réponses: 1
    Dernier message: 10/02/2009, 14h38
  2. [FOP] PB connection timed out
    Par benoît82 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 01/12/2008, 11h53
  3. Eclipse JBOSS 10060 Connection timed out
    Par g25452 dans le forum Eclipse Java
    Réponses: 0
    Dernier message: 31/07/2008, 14h23
  4. TestNG : Connection timed out
    Par onclezeb dans le forum Seam
    Réponses: 1
    Dernier message: 13/06/2008, 11h24
  5. Tâche cron et Connection timed out in headers ?
    Par sam_owm dans le forum Apache
    Réponses: 1
    Dernier message: 24/04/2008, 10h00

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