Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Anzahl der Elemente einer Menge (https://www.delphipraxis.net/87634-anzahl-der-elemente-einer-menge.html)

Mr. Pink 3. Mär 2007 13:40


Anzahl der Elemente einer Menge
 
Hi, wie kann ich am einfachsten die Anzahl der Elemente die in einer Menge (set of Byte) bekommen? Gibts da ne function für oder muss ich jede Zahl ausprobieren und wenn die drin ist, dann inkrementiere ich ne Zählvariable? Danke, Mr Pink

MatWur 3. Mär 2007 14:33

Re: Anzahl der Elemente einer Menge
 
ich denke SizeOf sollte das machen können.

mfg

Matthias

marabu 3. Mär 2007 15:10

Re: Anzahl der Elemente einer Menge
 
Hallo,

leider gibt es in Delphi nicht jeden denkbaren Mengen-Operator. Insbesondere die Anzahl der Elemente kann nur durch Tests festgestellt werden. SizeOf() ermittelt den belegten Speicher, was zwischen einem und 32 Byte sein können, je nachdem für wieviele Elemente die Menge maximal ausgelegt ist.

Durch Ausnutzung von Implementierungswissen funktioniert das hier:

Delphi-Quellcode:
function MemberCount(const ASet; const ASize: Byte): Integer;
type
  TByteArray = array [0..31] of Byte;
  PByteArray = ^TByteArray;
var
  iByte: Integer;
  pba: PByteArray;
begin
  pba := @ASet;
  Result := 0;
  for iByte := 0 to Pred(ASize) do
  begin
    case pba[iByte] and 15 of
      1,2,4,8: Inc(Result);
      3,5,6,9,10,12: Inc(Result, 2);
      7,11,13,14: Inc(Result, 3);
      15: Inc(Result, 4);
    end;
    case pba[iByte] shr 4 of
      1,2,4,8: Inc(Result);
      3,5,6,9,10,12: Inc(Result, 2);
      7,11,13,14: Inc(Result, 3);
      15: Inc(Result, 4);
    end;
  end;
end;

procedure TMainForm.ButtonClick(Sender: TObject);
begin
  ShowMessage(IntToStr(MemberCount(StringGrid.Options, SizeOf(StringGrid.Options))));
end;
Ist aber nicht wirklich zu empfehlen, da sich die Implementierung theoretisch jederzeit ändern könnte.

Freundliche Grüße

Mr. Pink 3. Mär 2007 15:53

Re: Anzahl der Elemente einer Menge
 
...ich habe es geahnt :(
naja, auf jedenfall danke dafür.

IngoD7 3. Mär 2007 16:41

Re: Anzahl der Elemente einer Menge
 
Kannst hier auch nochmal gucken:
http://forum.dsdt.info/viewtopic.php...er=asc&start=0


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:26 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz