![]() |
Re: Problem mit Mengen
Man definiert es meistens so:
Delphi-Quellcode:
TGegebenesElement ist eine Enumeration/Aufzählungstyp und TGegebeneElemente die eigentliche Menge zum zur Enumeration. Dann funktionieren auch Include(), Exclude() und alle anderen Mengenoperationen.
type
TGegebenesElement = (geRadius, geHoehe, geUmfang, geGrundflaeche, geVolumen, geOberflaeche); TGegebeneElemente = set of TGegebenesElement; Gruß Hagen |
Re: Problem mit Mengen
Noch ne Frage nebenbei : Wie bekommt man heraus wie viele Elemente in einer Menge gerade enthalten sind ?
|
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.
|
Re: Problem mit Mengen
ka :mrgreen:
Naja ich glaube ich weis wie ich sie doch zählen kann... |
Re: Problem mit Mengen
Delphi-Quellcode:
ungetestet, müsste aber so gehen.
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; Gruß Hagen |
Re: Problem mit Mengen
Also, wenn den einzelnen Elementen keine bestimmten Werte aufgezwungen sind, dann reicht auch schon volgendes
Delphi-Quellcode:
oder ganz kurz, da Ord(Low(TheSet)) = 0 sein sollte
Elemente := Ord(High(TheSet)) - Ord(Low(TheSet)) + 1;
Delphi-Quellcode:
(es könnte sogar sein, dass die Ord's auch entfallen können)
Elemente := Ord(High(TheSet)) + 1;
|
Re: Problem mit Mengen
Delphi-Quellcode:
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.SizeOf(Set) == High(Set) +1 <> CountOfElementsInSet(Set). 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:
Gruß Hagen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:12 Uhr. |
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