2008-10-31 11 views
10

Si j'ai un type défini comme un ensemble de un type énuméré, il est facile de créer un ensemble vide avec [], mais comment puis-je créer un ensemble complet?Comment remplir un ensemble Delphi?

EDIT: Oui, la solution évidente est d'utiliser une boucle for. C'est aussi une très mauvaise solution s'il y a un autre moyen. Est-ce que quelqu'un sait d'une manière qui fonctionnera dans le temps constant?

+1

Vous savez que c'est un bitset, donc utiliser ces connaissances et le remplir avec tous-1. Il n'y a pas de primitive de langage pour cela. –

Répondre

14

bas() et High() sont des fonctions "magiques du compilateur" qui peuvent être évalués au moment de la compilation. Cela permet leur utilisation dans les déclarations constantes comme ce qui suit:

 
var 
    MySet : TBorderIcons; 
    MySet2 : TBorderIcons; 
const 
    AllIcons : TBorderIcons = [Low(TBorderIcon)..High(TBorderIcon)]; 
begin 
    MySet := [Low(TBorderIcon)..High(TBorderIcon)]; 
    MySet2 := AllIcons; 
end; 
+0

Mec! C'était bien! ;) Je vous remercie! –

+0

Je supprime même ma propre réponse, après cela;) –

7

suggestion par Barry:

FillChar(VarSet, SizeOf(VarSet), $FF); 
Questions connexes