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 :

[D7][Commerce Server] Utiliser le Dictionary


Sujet :

Composants VCL Delphi

  1. #1
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut [D7][Commerce Server] Utiliser le Dictionary
    Bonjour,

    dans le cadre d'une application utilisant les objets COM de Commerce Server, je suis en train d'écrire une panoplie d'objet permettant de l'interfacer mais je rencontre un soucis avec les objets Dictionary.

    En effet en VB il est possible de faire ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each element In dictUser
        Response.Write element
    Next
    où element prend tour à tour les différentes clés du dictionnaire

    Or en Delphi 7 la syntaxe du foreach n'existe pas, de plus Dictionary ne comporte pas de propriété Items me permettant d'itérer dessus alors je ne sais pas comment faire pour reproduire cette syntaxe en Delphi.

    Si quelqu'un peut m'aider, merci d'avançe.

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Bon puisque visiblement personne n'a put trouver de solution je vais quand même partager mon expérience sur l'utilisation des objets COM de Commerce Server en particulier pour les Dictionnary et les SimpleList.

    La MSDN indique souvent pour ces deux objets des "raccourcits" pour accéder aux valeurs contenus dans l'objet, notemment la fameuse syntaxe :
    Ces syntaxes ne fonctionnent pas en Delphi, les deux seules syntaxes qui fonctionnent pour les Dictionnaires sont :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // mapping direct
    Dict.cle
     
    // récupération via le tableau
    Dict.Value['cle']
    La seule syntaxe que je ne suis pas arrivé à reproduire mais qui existe en VBScript est le foreach pour pouvoir faire un parcours de tout les éléments (comme demandé dans mon post précédent).
    Notez aussi que l'indexation par numéro du style Dict.Value[0] ne fonctionne pas, il renvoit une chaîne considérant probablement que l'on demande la valeur de l'élément dont la clé est '0'.

    Pour les SimpleList vous pouvez accéder aux valeurs de chaque éléments de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // par indexation
    Fields.Item[0].Value
     
    // par clé
    Fields.Item( 'cle' ).Value
    Cerise sur le gâteau je montre comment accéder aux valeurs d'un objet OrderGroup parce que la syntaxe est un peu méchante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OrderGroup.Value.Value['cle']
    où OrderGroup.Value donne le dictionnaire et OrderGroup.Value.Value permet d'accéder au tableau des clés/valeurs.

    N'oubliez pas que vous pouvez recréer la TLB des DLL en utilisant dans Projets->Importer bibliothèque de types. Faites Ajouter puis choisissez la DLL à sonder puis faites Créer l'unité puis sauvegardez. Et voila vous pouvez voir la déclaration des Interfaces des objets COM façon Delphi

    A nouveau si quelqu'un sait comment parcourir les items d'un Dictionnary ou récupérer les noms de toutes les clés, ça m'intérèsserait, merci.

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Finalement j'ai réussit à faire mon foreach sur les Valeurs du Dictionnary, merci la FAQ Delphi

    Par contre je n'ai pas pu utiliser directement la propriété _NewEnum comme dans l'exemple de la FAQ (même si cette propriété est bien présente dans la TLB )

    J'ai dû me débrouiller avec le lien annexe de la FAQ ici qui utilise la méthode Invoke du IDispatch pour récupérer l'interface en question. Et ça fonctionne . Je me permet de noter que faire un foreach sur un objet implémentant la IDictionnary de Commerce Server ne permet pas de récupérer les valeurs une à une mais les noms des clés de la collection du Dictionnary.

    En espérant que ça en aidera d'autres.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/03/2010, 13h59
  2. [2003 Server] utilisation service terminal server
    Par cbleas dans le forum Windows Serveur
    Réponses: 6
    Dernier message: 30/05/2007, 12h55
  3. [SQL server] utilisation combinée de AND et OR
    Par igorzup dans le forum Langage SQL
    Réponses: 3
    Dernier message: 12/01/2007, 10h48
  4. [sql server]utiliser Insert avec une clé auto
    Par nourbane dans le forum ASP
    Réponses: 6
    Dernier message: 18/05/2006, 23h02
  5. [SQL-SERVER] Utilisation de DEFAULT (valeur par défaut)
    Par Sytchev3 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 27/03/2006, 18h53

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