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 .NET Discussion :

problème de compilation sur tableau de List générique


Sujet :

Delphi .NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 127
    Points : 49
    Points
    49
    Par défaut problème de compilation sur tableau de List générique
    Bonjour, je suis confronté à un problème bisarre:
    J'ai besoin d'un tableau de taille 2 de Listes génériques (List<Int32>). Cependant, lorsque je cherche à affecter une liste à une case du tableau, la compilation me renvoie une erreur ...

    Lorsque je fais une tableau de listes non génériques (ArrayList), ça passe. Voici un exemple de code simplifié à l'extrème qui illustre mon problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    interface
    uses  System.Collections,System.Collections.Generic;
     
    type
      test = class
      public
          _arrayOfListGeneric : array [0..1] of List<Int32>;
          _arrayOfList : array [0..1] of ArrayList;
          procedure test1;
      end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    implementation
    procedure test.test1;
    begin
    _arrayOfList[0] := new List<Int32>(); // ça passe ...
    _arrayOfListGeneric[0] := new List<Int32>();
     // ça ne passe pas ... (avec erreur "affectation attendue")
    end; end.
    Quelqu'un peut-il m'expliquer d'où vient le problème

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 127
    Points : 49
    Points
    49
    Par défaut
    Je rajoute qu'en passant par la déclaration d'un type égale à List<Int32>, ça compile sans problème (donc en soit j'ai posté ce problème pour mieux comprendre la logique du langage (mon erreur) car j'ai trouvé un moyen de le contourner sans soucis). Voici un code qui compile sans soucis, équivalent au premier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    interface
    uses  System.Collections,System.Collections.Generic;
     
    type
      ListInt32 = List<Int32>;
      test = class
      public
          _arrayOfListGeneric : array [0..1] of ListInt32;
          procedure test1;
      end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    implementation
    procedure test.test1;
    begin
    _arrayOfListGeneric[0] := new List<Int32>(); // ça ne passe !!
    end;
     
    end.

  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
    Bonjour,

    Je pense que le problème est qu'il n'y a pas d'équivalence ou de descendance de ces types. Le TList<T> n'est pas un descendant de TList donc un ArrayList ne peut contenir de liste générique. Ce sont en fait deux objets parallèles.

    De même List<Int32> c'est différent de ListInt32, ce genre d'équivalence n'est vrai que pour les types simples mais pas pour les objets.
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 127
    Points : 49
    Points
    49
    Par défaut
    mmmh merci pour votre réponse mais ... ma fois je n'ai pas tout compris, notamment quelle est la différence entre mon type ListInt32 et List<Int32> sachant que je définis:
    ListInt32 = List<Int32>; ?

    Cordialement,

Discussions similaires

  1. Problème de compilation sur VB2008 Express
    Par djorfe dans le forum VB.NET
    Réponses: 5
    Dernier message: 12/03/2008, 10h25
  2. problème de compilation sur Ubuntu
    Par mister bean dans le forum Linux
    Réponses: 2
    Dernier message: 15/02/2008, 22h38
  3. Réponses: 7
    Dernier message: 12/11/2006, 12h49
  4. Réponses: 3
    Dernier message: 21/09/2006, 15h55
  5. [Eclipse][Java]Problème de compilation sur CTRL+S
    Par ZeKiD dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 27/05/2004, 11h49

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