Registriert seit: 2. Mär 2004
5.508 Beiträge
Delphi 5 Professional
|
Elemente in Mengen zählen
17. Nov 2006, 14:02
Hier wird gezeigt, wie man die Anzahl der Elemente in einer Menge ( set of) zählt:
Delphi-Quellcode:
function CountBitsSet(P: Pointer; Count: Cardinal): Cardinal;
const
lu : packed array[0..15] of Byte = (0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4);
var
b: Byte;
begin
Result := 0;
while Count > 0 do
begin
b := PByte(P)^;
// lower Nibble
Inc(Result, lu[b and $0F]);
// upper Nibble
Inc(Result, lu[b shr 4]);
Dec(Count);
Inc(PByte(P));
end;
end;
Beispiel:
Delphi-Quellcode:
type
TMonat = (Jan, Feb, Mar, Apr, Mai, Jun, Jul, Aug, Sep, Okt, Nov, Dez);
TMonate = set of TMonat;
var
monate : TMonate; // Die Menge
anzahl : Cardinal;
begin
monate := [Jan, Dez, Aug]; // mit 3 Elementen
anzahl := CountBitsSet(@monate, sizeof(monate)); // anzahl = 3
end;
Die Arbeitsweise der Funktion CountBitsSet ist in Datenbits effektiv zählen genauer beschrieben.
Andreas
|
|
Zitat
|