Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > Delphi > Langage
Langage Tout ce qui concerne le langage (POO, syntaxe, message d'erreur...)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 05/12/2012, 14h37   #1
aharel
Invité de passage
 
Inscription : octobre 2005
Messages : 53
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 53
Points : 1
Points : 1
Par défaut delphi XE : encapsuler TObjectDictionnary

Bonjour,

Je suis en train de coder une classe qui encapsulerait un dictionnaire.
Mais je ne parviens pas a créer une propriété qui me permettrait de'obtenir les clés de mon dictionnaire.

Ma classe a cette tête :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 TMaClasseCapsule = class
    private
      FMapIsotopes : TObjectDictionary<String, TMonObjet>;
 
    public
     property Cles[Index : Integer] : String read GetCles;
  end;
 
function TMaClasseCapsule.GetCles(Index: Integer): String;
begin
  Result := self.FMapIsotopes.Keys[Index]; //ne compile pas
end;
la fonction GetCles ne compile pas et me renvoie l'erreur suivante :

Erreur E2149 : la classe n'a pas de propriété par défaut.

Je ne pige pas trop.
aharel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2012, 15h10   #2
ShaiLeTroll
Expert Confirmé Sénior
 
Avatar de ShaiLeTroll
 
Homme
Développeur C++\Delphi
Inscription : juillet 2006
Messages : 9 261
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : France

Informations professionnelles :
Activité : Développeur C++\Delphi
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : juillet 2006
Messages : 9 261
Points : 13 373
Points : 13 373
A la limité, utilise une TStringList, les bonnes vielles méthodes sont parfois aussi bien que les nouvelles surtout si l'on spécialise un générique comme tu le fait

Keys est TKeyCollection, semble plutôt conçu pour le for in

la TStringList est idéalement pour <String, Objects>, j'ai même fait une version avancée : THashStringList

Code :
1
2
3
4
5
6
7
8
9
10
11
  TMaClasseCapsule = class
  private
    FMapIsotopes : TStringList;
   public
     property Cles[Index : Integer] : String read GetCles;
  end;
 
function TMaClasseCapsule.GetCles(Index: Integer): String;
begin
  Result := FMapIsotopes.Strings[Index]; 
end;
__________________
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

Halte à la ségrégation des Cinémas, VO sur Paris, VF en Banlieue, Abonnement résilié !
ShaiLeTroll est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2012, 15h44   #3
aharel
Invité de passage
 
Inscription : octobre 2005
Messages : 53
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 53
Points : 1
Points : 1
Par défaut Delphi XE : encapsulation TDictionary

En fait c'était bête comme choux ...
Désolé !

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
TMaClasseCapsule = class
  private
    FMapIsotopes : TStringList;
   public
    property Cles : TEnumerable<String> read GetCles;
  end;
 
function TMaClasseCapsule.GetCles : TEnumerable<String>;
begin
  //Result := String(FMapIsotopes.GetKey(Index));
  Result := FMapIsotopes.Keys;
end;
aharel est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 01h55.


 
 
 
 
Partenaires

Hébergement Web