Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Problem mit Mengen (https://www.delphipraxis.net/41384-problem-mit-mengen.html)

negaH 2. Mär 2005 17:50

Re: Problem mit Mengen
 
Man definiert es meistens so:

Delphi-Quellcode:
type
  TGegebenesElement = (geRadius, geHoehe, geUmfang, geGrundflaeche, geVolumen, geOberflaeche);
  TGegebeneElemente = set of TGegebenesElement;
TGegebenesElement ist eine Enumeration/Aufzählungstyp und TGegebeneElemente die eigentliche Menge zum zur Enumeration. Dann funktionieren auch Include(), Exclude() und alle anderen Mengenoperationen.

Gruß Hagen

Neutral General 2. Mär 2005 18:28

Re: Problem mit Mengen
 
Noch ne Frage nebenbei : Wie bekommt man heraus wie viele Elemente in einer Menge gerade enthalten sind ?

Hansa 2. Mär 2005 18:33

Re: Problem mit Mengen
 
Gar nicht. Wüßte nicht wie. Und es wäre nett, wenn du mal zeigst, wie Du aus einem Typen eine Variable machst.

Neutral General 2. Mär 2005 18:43

Re: Problem mit Mengen
 
ka :mrgreen:
Naja ich glaube ich weis wie ich sie doch zählen kann...

negaH 2. Mär 2005 20:35

Re: Problem mit Mengen
 
Delphi-Quellcode:
function CountOfElements(const Elements: TElements): Integer;
var
  I: TElement;
begin
  Result := 0;
  for I := Low(I) to High(I) do
    if I in Elements then
      Inc(Result);
end;

function CountOfElements(const Elements: TElements): Integer;
var
  I: Int64;
begin
  I := Ord(Elements);
  Result := 0;
  while I <> 0 do
  begin
    if Odd(I) then Inc(Result);
    I := I shr 1;
  end;
end;
ungetestet, müsste aber so gehen.

Gruß Hagen

himitsu 3. Mär 2005 12:56

Re: Problem mit Mengen
 
Also, wenn den einzelnen Elementen keine bestimmten Werte aufgezwungen sind, dann reicht auch schon volgendes

Delphi-Quellcode:
Elemente := Ord(High(TheSet)) - Ord(Low(TheSet)) + 1;
oder ganz kurz, da Ord(Low(TheSet)) = 0 sein sollte

Delphi-Quellcode:
Elemente := Ord(High(TheSet)) + 1;
(es könnte sogar sein, dass die Ord's auch entfallen können)

negaH 4. Mär 2005 02:27

Re: Problem mit Mengen
 
Delphi-Quellcode:

  SizeOf(Set) == High(Set) +1 <> CountOfElementsInSet(Set).
In anderen Worten High(Set) +1 gibt die Größe der Menge, d.h. wieviele unterschiedliche Elemente sie maximal enthalten kann. Dies ist somit nicht die Anzahl der tatsächlich enthaltenen Elemnte zu einem bestimmten zeitpunk.

Die max. Anzahl der Elemente in der Menge TZiffern = [0...9] ist 10 == High(TZiffern) +1,
eine Mengevariabale vom Typ TZiffern könnte aber auch so aussen -> Ziffern = [1,5,8]. High(Ziffern) == High(TZiffern) = 10, die Anzahl der real enthaltenen Elemente ist aber nur 3, denn nur drei Zahlen sind aktuell in Ziffern.

himitsu, damit gibt dein Vorschlag nicht wie gefragt

Zitat:

Wie bekommt man heraus wie viele Elemente in einer Menge gerade enthalten sind ?
die Anzahl der aktuell enthaltenen Elemente zurück.

Gruß Hagen


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:12 Uhr.
Seite 2 von 2     12   

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