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 :

Erreur Transtypage incorrect en 64Bits pas en 32Bits


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2003
    Messages : 171
    Par défaut Erreur Transtypage incorrect en 64Bits pas en 32Bits
    Bonjour

    Bonnes fêtes à tous
    En compilant une des mes unité en 64bits j'ai le message [dcc64 Erreur] ufbobjetad.pas(663): E2089 Transtypage incorrect
    en 32Bits cela fonctionne

    mon unité permet d'extraire les données de l'AD
    et c'est la partie qui gère les GUID qui pose problème

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    vresultat := fiads.Get ( strAttribut );
    result := GUIDToString ( tguid ( vresultat ) );
    le pb vient de tguid ( vresultat )
    y a t'il une adaptation à faire en 64bits
    ou c'est ma façon de convertir un variant en guid qui n'est pas bonne ?

  2. #2
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    c'est quoi vresultat ?
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2003
    Messages : 171
    Par défaut
    Bonjour

    vresultat : Olevariant;

  4. #4
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    euh...je ne comprend même pas que ça fonctionne en 32bits...

    c'est quoi fiads.get() ? c'est supposé retourner quoi ?

    voilà typiquement le genre de code que je n'aime pas, on colle un OleVariant et "je ne veux pas savoir comment ça marche...que le compilateur se débrouille"
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2003
    Messages : 171
    Par défaut
    Bonjour Paul


    fiads est une interface IADS que l'on trouve dans ActiveDs_TLB (une bibliothèque de type importé depuis c:\Windows\System32\activeds.tlb)
    elle permet de manipuler les objets active directory
    la fonction Get permet de retourner un attribut de l'objet active directory
    donc çà retourne différent type de données ( texte, numérique, date, ...)
    voici le détail de l'interface
    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
    23
    24
    25
    26
    27
    28
     
    // *********************************************************************//
    // Interface :   IADs
    // Indicateurs : (4416) Dual OleAutomation Dispatchable
    // GUID :        {FD8256D0-FD15-11CE-ABC4-02608C9E7553}
    // *********************************************************************//
      IADs = interface(IDispatch)
        ['{FD8256D0-FD15-11CE-ABC4-02608C9E7553}']
        function Get_Name: WideString; safecall;
        function Get_Class_: WideString; safecall;
        function Get_GUID: WideString; safecall;
        function Get_ADsPath: WideString; safecall;
        function Get_Parent: WideString; safecall;
        function Get_Schema: WideString; safecall;
        procedure GetInfo; safecall;
        procedure SetInfo; safecall;
        function Get(const bstrName: WideString): OleVariant; safecall;
        procedure Put(const bstrName: WideString; vProp: OleVariant); safecall;
        function GetEx(const bstrName: WideString): OleVariant; safecall;
        procedure PutEx(lnControlCode: Integer; const bstrName: WideString; vProp: OleVariant); safecall;
        procedure GetInfoEx(vProperties: OleVariant; lnReserved: Integer); safecall;
        property Name: WideString read Get_Name;
        property Class_: WideString read Get_Class_;
        property GUID: WideString read Get_GUID;
        property ADsPath: WideString read Get_ADsPath;
        property Parent: WideString read Get_Parent;
        property Schema: WideString read Get_Schema;
      end;
    Cela fonctionne correctement en 32/64bits pour une bonne partie des types de données
    sauf quand c'est un GUID j'avais trouvé le code pour convertir le GUID en String
    mais le compilateur 64 ne semble pas l’apprécier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GUIDToString ( tguid ( vresultat ) )
    petit détail du type TGUID de l'unité system
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
      PGUID = ^TGUID;
      TGUID = record
        D1: Cardinal;
        D2: Word;
        D3: Word;
        D4: array[0..7] of Byte;
        class operator Equal(const Left, Right: TGUID): Boolean;
        class operator NotEqual(const Left, Right: TGUID): Boolean;
        class function Empty: TGUID; static;
        class function Create(const Data; BigEndian: Boolean = False): TGUID; overload; static;
        class function Create(const Data: array of Byte; AStartIndex: Cardinal; BigEndian: Boolean = False): TGUID; overload; static;
      end;

  6. #6
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    alors, un TGUID oui je sais ce que c'est, par contre je n'utilise pas souvent OleVariant...il se trouve qu'il fait 16 octets en 32bits (la même taille qu'un TGUID) et 24 en 64bits...en 32Bits il fait donc une copie brutale de la valeur et ça passe, en 64 bits il ne sait pas comment faire entrer 24 octets dans 16 octets...et moi non plus
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/10/2016, 15h26
  2. [Lazarus] Erreur de compilation 64bits n'apparaissant pas en 32bits
    Par tintinux dans le forum Lazarus
    Réponses: 11
    Dernier message: 06/09/2011, 18h38
  3. erreur transtypage incorrect
    Par OutOfRange dans le forum Delphi
    Réponses: 4
    Dernier message: 05/10/2006, 19h44
  4. REquete sans erreur sql qui n'agit pas ........
    Par Skam dans le forum Langage SQL
    Réponses: 7
    Dernier message: 02/02/2005, 13h41
  5. Erreur : La classe ne gère pas Automation..
    Par Invité dans le forum VBA Access
    Réponses: 1
    Dernier message: 09/09/2004, 10h24

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