Autor Beitrag
Martin1966
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1068

Win 2000, Win XP
Delphi 7, Delphi 2005
BeitragVerfasst: Do 27.09.07 15:48 
Hi hi!

In Delphi gibt es ja die Möglichkeit Aufzählungstypen mit expliziter Ordinalposition zu definieren.

ausblenden Delphi-Quelltext
1:
type Size = (Small = 5, Medium = 10, Large = Small + Medium);					


Was für ein Nutzen habe ich als Anwendungentwickler für expliziter gesetzte Ordinalpositionen? In meiner ganzen Zeit als Entwickler habe ich davon noch nie Gebrauch gemacht. Das einzige was ich mir vorstellen könnte wäre, dass man den Aufzählungstype von Zeit zu Zeit erweitert und durch Einfügen neuer Bezeichner den Ordinalwert der schon vorhandener Bezeichner erhalten lassen möchte. Aber weitere Vorteile fallen mir so nicht ein.

Habt Ihr schon mal solche Aufzählungstypen definiert?

Lg, Martin

_________________
Ein Nutzer der Ecke ;-)
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 27.09.07 15:53 
Moin!

Das frage ich mich auch... :gruebel:

Ich habe schonmal den ersten Wert explizit gesetzt, um das Intervall anzupassen, aber nicht-aufsteigende Aufzählungstypen... :nixweiss: hab ich auch noch nie "gebraucht".

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
noidic
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 851

Win 2000 Win XP Vista
D7 Ent, SharpDevelop 2.2
BeitragVerfasst: Do 27.09.07 16:03 
Es bringt dann was, wenn man aus einem Set des Typs am Ende einen einzelnen Integer machen will. Das geht hervorragend, wenn man die Ordinalwerte als 2er-Potenzen definiert, dann hat man ne schöne Bitmaske.

Beispiel:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
TDingens = ( a = 1, b = 2, c = 4, d = 8);

I := a or c; ( = 5 )

if I and a then
...

_________________
Bravery calls my name in the sound of the wind in the night...
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Fr 28.09.07 13:56 
Solche Aufzählungstypen sind dann nützlich, wenn man bestimmte Datentypen hat, die in der Aufzählung neben dein expliziten Werten auch noch weitere Informationen mitkodieren wollen.

Bei einem Kartenspiel kann ich so nämlich aus 2 Feldern (Farbe und Karte) eine Information über einen Aufzählungstyp machen UND tortzdem beide Informationen ohne großen Overhead dekodieren.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Reinhard Kern
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 591
Erhaltene Danke: 14



BeitragVerfasst: Fr 28.09.07 15:26 
user profile iconMartin1966 hat folgendes geschrieben:
Hi hi!

In Delphi gibt es ja die Möglichkeit Aufzählungstypen mit expliziter Ordinalposition zu definieren.

ausblenden Delphi-Quelltext
1:
type Size = (Small = 5, Medium = 10, Large = Small + Medium);					


Was für ein Nutzen habe ich als Anwendungentwickler für expliziter gesetzte Ordinalpositionen? In meiner ganzen Zeit als Entwickler habe ich davon noch nie Gebrauch gemacht. Das einzige was ich mir vorstellen könnte wäre, dass man den Aufzählungstype von Zeit zu Zeit erweitert und durch Einfügen neuer Bezeichner den Ordinalwert der schon vorhandener Bezeichner erhalten lassen möchte. Aber weitere Vorteile fallen mir so nicht ein.

Habt Ihr schon mal solche Aufzählungstypen definiert?

Lg, Martin


Hallo,

a) Anpassung an Fremdsoftware, die möglicherweise auch in einer anderen Sprache formuliert ist.

b) Konsolidierung von eigenem Software-Mist, in dem man Statusnummern manuell reingehackt hat - es kommt z.B. oft vor, wenn man Zustände während des Entwickelns streicht, dass dann Nummern unbesetzt sind u.ä.

dann ist es am sichersten, zuerst mal den Ist-Zustand als Aufzählung zu definieren.

Gruss Reinhard