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

Langage Delphi Discussion :

Comment faire un Case sur des résultats HResult ?


Sujet :

Langage Delphi

  1. #1
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut Comment faire un Case sur des résultats HResult ?

    j'appel une fonction qui me renvoi des résultats de type HResult et j'aimerais faire un gestionnaire dans un case pour identifier le problème dans le cas ou la fonction échoue.

    le détail des valeur est défini
    ici au format 0x8007XXXX mais j'arrive pas a interpréter ces codes.

    j'ai bien cherché et j'ai trouvais ça mais je me retrouve pas vraiment.

    la fonction utilisé c'est ADSOpenObject.

    merci.

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 671
    Points : 25 481
    Points
    25 481
    Par défaut
    problème d'Hexa

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    case AResult of
      $0 : MessageString:= 'Operation succeeded';
      $80070002 : MessageString:= 'Object does not exist'; 
      $80070005 : MessageString:= 'Authentication method not supported';
      ...
    end;
    ensuite, tu peux récupérer le code LDAP via un décalage

    LDAPError := AResult shl 16; // ou shr je ne sais plus

  3. #3
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    shai sa marche pas la valeur récupérer et un nombre négatif quand je l'affiche avec IntToStr

  4. #4
    Membre confirmé Avatar de TryExceptEnd
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 501
    Points : 576
    Points
    576
    Par défaut
    Le résultat retourné par la fonction est un chiffre hexadécimale ($80070005) par exp., pour pouvoir l'utiliser, tu élimine la partie fixe du nombre ($80070000) par une simple opération d'exclusion : (HResult XOR $80070000);
    Tu peut aussi utiliser la fonction ADsGetLastError pour récupérer le code de la dernière erreur survenue.

  5. #5
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    Problèmes résolus bon j'ai utilisé la méthode de Chai.
    après avoir effectuer des simulation des erreur et j'affichais les résultat avec IntToHex j'ai remarqué que les code retourné ne figure pas dans ma table de référence.
    après avoir cherché j'ai trouvé la bonne table Win32 Error Codes au lieux Win32 Error Codes for ADSI 2.0
    par contre quand j'appel le case avec des valeur HEXA j'ai des avertissents
    • l'expression constante dépasse les limites de sous-étendue.
    • Libellé CASE hors des limites de l'expression CASE.
    mais sa marche.
    je pense de préférence je vais convertir en entier.

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

Discussions similaires

  1. Réponses: 22
    Dernier message: 10/07/2011, 17h49
  2. Réponses: 3
    Dernier message: 11/10/2008, 13h32
  3. Comment faire un DROP sur des tables qui change de nom ?
    Par GeantBioHazard dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 04/07/2008, 15h03
  4. Réponses: 1
    Dernier message: 09/11/2006, 12h08
  5. [VB6] Comment faire un update sur des textbox qui sont créés
    Par bb62 dans le forum VB 6 et antérieur
    Réponses: 27
    Dernier message: 16/02/2006, 14h52

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