![]() |
Delphi-Version: XE5
Generische Variable vom Typ "Set"?
Delphi und seine Mengen. Manchmal echt cool.
Angenommen es ist
Delphi-Quellcode:
type
TMyEnum = (korruption, schnecken, kekse); TMyEnumSet = set of TMyEnum; Komme ich drum herum, mir eine eigentlich überflüssige Typdeklaration
Delphi-Quellcode:
zu bauen? Mit Arrays kommt man ja auch um die Deklaration
TMyEnumSet
Delphi-Quellcode:
herum und kann stattdessen
TMyEnumArray = array of TMyEnum;
Delphi-Quellcode:
schreiben.
TArray<TMyEnum>
Ich glaube, ich habe das schon mal gefragt. Aber ich finde nichts. |
AW: Generische Variable vom Typ "Set"?
Gehen tut es definitiv nicht, aber das hast du sicher schon probiert.
Der Grund könnte darin liegen, daß sich ein Set immer auf einen Ordinaltyp mit begrenzter Kardinalität bezieht und dieser Constraint bei Generics nicht möglich ist, |
AW: Generische Variable vom Typ "Set"?
Stimmt, die Begründung mach Sinn.
Gibt auch noch andere Einschränkungsmöglichkeiten für Generics die man sich wünschen könnte (Records). Hoffentlich wird das irgendwann mal was ;-) |
AW: Generische Variable vom Typ "Set"?
Ja,
Delphi-Quellcode:
:roll:
TMyEnumSet = set of (korruption, schnecken, kekse);
ABER, * der Namespace TMyEnumSet.korruption funktioniert nicht * teilweise gibt es Probleme mit Serialisierungsfunktionen, welche den Enum-Typen haben wollen * und man kann keine for-in-Schleife nutzen, weil man auch da den Enum-Typen benötigt * Documentation Insigt schrottet dir das SET und macht ein Enum draus (
Delphi-Quellcode:
), weil es "ausversehn" das
TMyEnumSet = (korruption, schnecken, kekse);
Delphi-Quellcode:
löscht. :wall: (aber DocInsight gibt es in XE7 eh nicht mehr :cry:)
set of
Und nein, Array und SET sind zwei komplett unterschiedliche Dinge. :warn: In ein Array könnte man auch locker
Delphi-Quellcode:
rein tun, da es eben eine "Liste von Enums" und kein "Set von Enum" ist.
(korruption, korruption, korruption, kekse, korruption)
|
AW: Generische Variable vom Typ "Set"?
Das ABER hat leider die VCL/RTL-Entwickler an manchen Stellen leider trotzdem nicht davon abgehalten :-(
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:47 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