Hi Comm,
Delphi-Quellcode:
type
tdockopt_UA=( DockBasicSize_UA, //gehört bei der Größenbestimmung dazu
DockAuto_UA, //soll von self angedockt werden
DockHori_UA) //Anordnung von in horizontaler Reihenfolge sonst vertiKal
tDockOpts_UA =set of tdockOpt_UA;
const
TagOpts2hochX_UA:array [tdockopt_UA]of integer = (1,2,4);//16,32,64,128,256,512,1024);
der Zugriff auf die Potenzen von 2 in TagOpts2hochX_UA ist umständlich:
Delphi-Quellcode:
function getPotenz(von:tdockopt_UA);
begin
result:=TagOpts2hochX_UA[von]
end;
Das geht ja noch.
Noch umständlicher wird es, wenn ich iterieren muß:
Delphi-Quellcode:
Procedure settag;
var i:integer;
opts: tDockOpts_UA
begin
for I := integer(Low(tDockopt_UA)) to integer(High(tDockopt_UA)) do
opts:=opts +[tDockopt_UA(i)];
tag:=0;
for I := integer(Low(tDockopt_UA)) to integer(High(tDockopt_UA)) do
begin
if tDockopt_UA(i) in opts then
Tag:=Tag or TagOpts2hochX_UA[tDockOpt_UA(i)];//Bitweise Zuordnung für Tag
//oder fest codiert ... und da gäbe es noch mehr Eigenschaften
tag:=FlagOn_UA(tag,TagOpts2hochX_UA[DockBasicSize_UA] or TagOpts2hochX_UA[DockAuto_UA]
or TagOpts2hochX_UA[DockHori_UA]);
end;
Nun die Frage:
Gibt es eine Möglichkeit, ein set oder Array zu schaffen,
in welchem sowohl die Bezeichner als auch die zugehörigen Potenzen vereinigt sind.
also im Prinzip
Delphi-Quellcode:
const
DockBasicSize_UA=1;
DockAuto_UA=2;
DockHori_UA=4; //Anordnung von in horizontaler Reihenfolge sonst vertiKal
in eine durchzählbare Struktur zu packen?
Grüße Uwe