AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Anzahl der Elemente einer Menge

Ein Thema von Mr. Pink · begonnen am 3. Mär 2007 · letzter Beitrag vom 3. Mär 2007
Antwort Antwort
Mr. Pink

Registriert seit: 29. Jan 2006
72 Beiträge
 
#1

Anzahl der Elemente einer Menge

  Alt 3. Mär 2007, 13:40
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
  Mit Zitat antworten Zitat
MatWur

Registriert seit: 22. Feb 2007
Ort: Spessart
26 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Anzahl der Elemente einer Menge

  Alt 3. Mär 2007, 14:33
ich denke SizeOf sollte das machen können.

mfg

Matthias
Matthias
Es gibt drei verschiedene Arten von Mathematikern: die, die bis 3 zählen können und die, die das nicht können.
Ich gehöre zur mittleren Gruppe.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Anzahl der Elemente einer Menge

  Alt 3. Mär 2007, 15:10
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
  Mit Zitat antworten Zitat
Mr. Pink

Registriert seit: 29. Jan 2006
72 Beiträge
 
#4

Re: Anzahl der Elemente einer Menge

  Alt 3. Mär 2007, 15:53
...ich habe es geahnt
naja, auf jedenfall danke dafür.
  Mit Zitat antworten Zitat
IngoD7

Registriert seit: 16. Feb 2004
464 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Anzahl der Elemente einer Menge

  Alt 3. Mär 2007, 16:41
Kannst hier auch nochmal gucken:
http://forum.dsdt.info/viewtopic.php...er=asc&start=0
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:14 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