Zitat von
Amateurprofi:
Delphi-Quellcode:
function SingleValueInSet(v:zahlen):integer;
begin
result:=0;
if (Word(v)>0) and (Word(v) and (Word(v)-1) = 0) then // dann ist nur ein Wert im Set
while not odd(word(v)) do begin
inc(result);
Word(v):=Word(v) shr 1;
end;
end;
Bei dieser Art der Typkonvertierung muß man nur aufpassen.
Also der neue Typ muß genaudo groß sein, wie das Set, sonst meckert der Compiler.
Set = 1 Byte > Byte
Set = 2 Byte > Word
Set = 4 Byte > LongWord
...
Hier stimmt das Word aber > 10 Werte / 8 Bit = 1,25 = 2 Byte
Und das Verfahren ist dort etwas erklärt
http://www.delphipraxis.net/internal...ight=countbits