2008-10-31 6 views
10

Wenn ich einen Typ als Satz von einen Aufzählungstyp definiert haben, ist es einfach, einen leeren Satz mit [] zu erstellen, aber wie erstelle ich einen vollen Satz?Wie fülle ich ein Delphi-Set?

EDIT: Ja, die naheliegende Lösung ist eine For-Schleife zu verwenden. Das ist auch eine wirklich schlechte Lösung, wenn es einen anderen Weg gibt. Kennt jemand eine Art, die in konstanter Zeit arbeiten wird?

+1

Sie wissen, dass es ein bitset ist, so dass das Wissen nutzen und es mit all-1s füllen. Es gibt kein primitives Wort dafür. –

Antwort

14

Low() und Hoch() sind "Compiler Magie" Funktionen, die bei der Kompilierung ausgewertet werden können. Dies ermöglicht ihre Verwendung in konstanten Erklärungen wie folgt aus:

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

Alter! Das war gut! ;) Vielen Dank! –

+0

Ich lösche sogar meine eigene Antwort, danach;) –

7

Per Barrys Vorschlag:

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