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 :

XE3 Firemonkey System.Generics.Collections.TDictionary<string, TLayout>


Sujet :

Langage Delphi

  1. #1
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 387
    Points : 2 999
    Points
    2 999
    Par défaut XE3 Firemonkey System.Generics.Collections.TDictionary<string, TLayout>
    Bonjour

    Vendredi ... Match tout proche ... Je m'en sors plus.

    J'utilise un System.Generics.Collections.TDictionary<string, TLayout>.

    Impossible de trouver comment accéder à un élément de cette foutue liste par un index plutôt que par une clé.

    Est-ce que vous pensez que c'est possible, ou que je m'acharne pour rien ?

    Mon problème est que j'ajoute des éléments dans un certain ordre et que, par un for..in, l'ordre original n'est pas respecté.
    Et ça, c'est problématique pour moi.

    Papy !

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 393
    Points : 637
    Points
    637
    Par défaut
    l'ordre dépend des clefs donc tu n'as pas le contrôle dessus, utilise TList ou TObjectList si tu veux pouvoir gérer manuellement l'ordre des éléments

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 457
    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 457
    Points : 24 870
    Points
    24 870
    Par défaut
    Citation Envoyé par Papy214 Voir le message
    J'utilise un System.Generics.Collections.TDictionary<string, TLayout>.

    Est-ce que vous pensez que c'est possible, ou que je m'acharne pour rien ?
    Oui c'est possible d'avoir un accès brut mais l'ordre sera selon la gestionnaire du tri en arbre
    et pas l'ordre d'insertion comme te lu fais remarquer parce que cela améliore les performances

    Je déclare mes types souvent en classes internes d'une autre classe, un peu comme un typedef C++

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TLayoutMap = System.Generics.Collections.TDictionary<string, TLayout>;
    TLayoutMapIterator = System.Generics.Collections.TPair<string, TLayout>;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var
      it: TLayoutMapIterator;
    begin
      for it in FLayoutMap do
        ShowMessage(it.Key + ' = ' + it.Value.ClassName()
     
    end;
    Autres solutions un map à l'ancienne une TStringList et ses Objects[]
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #4
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 387
    Points : 2 999
    Points
    2 999
    Par défaut
    En fait, j'ajoute les éléments à cette liste pour les utiliser ensuite comme source de structure d'affichage.
    J'ai une TListbox et un TLayout parent.
    Quand je choisis un type d'interface, je remplis la TListbox avec des TButton dont le libellé est la clé.
    Chaque TButton associe sa propriété TagObject au Tlayout correspondants.
    Ainsi, quand je clique sur un bouton, j'affiche le TLayout demandé.

    Mais si l'ordre n'est pas respecté, ça ne colle plus.

    Je vais passer par un TStringList "à l'ancienne".

    Merci et bonne journée.

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 457
    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 457
    Points : 24 870
    Points
    24 870
    Par défaut
    tu peux aussi faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TButtonLayoutMap = System.Generics.Collections.TDictionary<TButton, TLayout>;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #6
    Membre émérite
    Avatar de Thierry Laborde
    Homme Profil pro
    N/A
    Inscrit en
    Avril 2002
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : N/A

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 391
    Points : 2 529
    Points
    2 529
    Par défaut
    Bonjour,

    Et pourquoi pas créer une classe qui contient les propriétés String, Layout... puis ensuite utiliser un Tlist<TMaClasse> ?

    http://www.jcolibri.com/articles/pro..._generics.html

  7. #7
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 387
    Points : 2 999
    Points
    2 999
    Par défaut
    Salut Thierry

    J'aurais pu mais j'ai pris l'habitude des TDictionary.
    Finalement, le TStringList a très bien fait l'affaire.

    Je jette quand même un coup d'oeil au site indiqué.

    Merci

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

Discussions similaires

  1. System.getenv() et interface Map<String, String>
    Par Elisia dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 23/01/2014, 12h58
  2. Réponses: 7
    Dernier message: 14/07/2011, 22h58
  3. Réponses: 8
    Dernier message: 28/08/2010, 09h44
  4. Conversion String Collection en List <String>
    Par Seth77 dans le forum Framework .NET
    Réponses: 2
    Dernier message: 21/11/2006, 09h57
  5. [Collections] Tableau de String
    Par gexti dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 02/06/2004, 15h42

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