Comment récupérer le n ième élément d'un ensemble ?

bluemandfr Messages postés 55 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 16 mai 2013 - 29 déc. 2011 à 01:00
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 - 29 déc. 2011 à 14:51
Bonjour à tous.

Soit l'ensemble :

MonEns : set of byte;


Je souhaite à un moment donné de mon traitement récupérer le n ième élément de cet ensemble (les éléments étant par définition ordonnés dedans)

Est-ce possible, et surtout comment procéder ?

Merci !

3 réponses

dubois77 Messages postés 675 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 février 2019 14
29 déc. 2011 à 11:13
bonour
ord(n) peut être

Dubois77
0
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 2
29 déc. 2011 à 14:20
Bonjour

En 5 minutes, montre en main, j'ai écrit vite et bien( ou mal !!! qui sait ) le code suivant si cela peut aider :

program Project1;

{$APPTYPE CONSOLE}

uses
   TypInfo,
   SysUtils;

type
  TMonEnumeration =
    ( meElementParDefaut // Valeur par défaut de l'énumération (=0)
    , meElement1
    , meElement2
    , meElement3
    , meElement4
    , meElement5
    );

function NiemeElement ( const n : integer ) : TMonEnumeration ;
var
  i : integer ;
begin
  Result := meElementParDefaut ;
  for i := Integer(Low(TMonEnumeration)) to Integer(High(TMonEnumeration)) do
  begin
    if (i=n) then Result := TMonEnumeration(i) ;
  end;
end;

procedure ShowElement ( const E : TMonEnumeration ) ;
begin
  writeln( GetEnumName(TypeInfo(TMonEnumeration), integer(E)) );
  // Toutefois, Attention !!!
  // si des valeurs sont affectées à l'énumération, comme ci-dessous,
  // alors il me semble que la fonction GetEnumName ne fonctionnera plus !!
  // TMonEnumeration =
  //  ( meElementParDefaut
  //  , meElement1 = 10
  //  , meElement2 = 13
  //  , meElement3
  //  , meElement4 = 20
  //  , meElement5
  //  );
end;

begin
  try
    ShowElement( NiemeElement(3) );
    readln;
  except
    on E:Exception do
      Writeln(E.Classname, ': ', E.Message);
  end;
end.


N.B. Application console testée sous Delphi 2009 uniquement !

Cordialement.[hr]"L'imagination est plus importante que le savoir." Albert Einstein
0
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 2
29 déc. 2011 à 14:51
Je n'ai pas précisé dans le post précédent, car cela me semblait aller de soi, qu'il faut utiliser le même principe pour le set.

Cordialement.[hr]"L'imagination est plus importante que le savoir." Albert Einstein
0
Rejoignez-nous