| |
|
|
Michael W. | Hm, sieht ja schlimm aus wenn da die Formatierung verbogen wird, aber ich glaube jetzt ist es erkennbar.
Das ENUM hat ja inzwischen auch Java heimgesucht, es wird also nicht nur von mir gern genutzt.
Hier ein Beispiel für den Einzug in XProfan. KompilierenMarkierenSeparieren// -
enum eBoolean = eFalse, eTrue
// -
enum eJustify = eJustify_Left \/*0*/
eJustify_Center \/*1*/
eJustify_Right/*2*/
// -
enum eWeekdays = eWeekday_Sunday, \
eWeekday_Monday, \
eWeekday_Tuesday, \
eWeekday_Wednesday, \
eWeekday_Thursday, \
eWeekday_Friday, \
eWeekday_Saturday
// -
Declare eBoolean bTest
Declare eJustify lJustification
// -
bTest = eTrue
// -
Proc WDtoText
Parameters eWeekdays eDay
Var String Klartext = "Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday"
Return SubStr(KlarText, eDay + 1, ",")// Rechnen mit ENUM
EndProc
// -
// Rechnen mit ENUM setzt die Konstante frei, alles OK
// Rechnen in ENUM-Var muß aber innerhalb der Grenzen eines ENUM bleiben; was passiert bei Überschreitung der Grenzen?
Declare eWeekdays eDay
Inc eDay
Dec eDay
// -
// Bewegen innerhalb von ENUM mittels enumMin() und enumMax()
<kleinster ENUM-Wert> = enumMin(<enumtype>)
<größter ENUM-Wert> = enumMax(<enumtype>)
// -
// erlaubt dann z.B. auch... (intern gesteuert)
ForEach eDay
Print WDtoText(eDay)
EndFor
// -
// oder... (hier müßte das FOR dann auch typisierte Variablen ermöglichen)
For eWeekdays eDay, enumMin(eWeekdays), enumMax(eWeekdays)
Print WDtoText(eDay)
EndFor
// -
// evtl. noch
TestEnum(eVal)
// Testet ob der Wert innerhalb der Grenzen ist.
Info: [...] |
|
|
| System: Windows 8/10, XProfan X4 Programmieren, das spannendste Detektivspiel der Welt. | 09.01.2015 ▲ |
|
|
|
|
| Wo ist der Vorteil im Vergleich zu:
var myColorsEnumVar=array("rot","grün","blond")
in Verbindung mit ForEach... ? |
|
|
| |
|
|
|
Michael W. | Ich habe bewußt eine Funktion zwischen ForEach gesetzt, damit das klarer wird. Es geht nicht einfach um die Zuweisung. Mit ENUMs ist noch ein bischen mehr möglich.
Auch KompilierenMarkierenSeparieren zeigt ja schon, das die Werte nicht immer nur aufsteigend von 0 gespeichert werden. Es können auch neue Startwerte (wie hier bei blond) gesetzt werden.
Ich kenne das ENUM aus Pascal (dort heißt's Aufzählungstyp): KompilierenMarkierenSeparierentype
TAmpel = (rot = 1, gelb = 2, gruen = 4);
TArbeitstage = (Mo = 1, Di = 2, Mi = Mo + Di, Don = 4, Fr = Di + Mi);// Mi = 1+2=3, Fr = 2+3=5
TDoppelt = (Bez1 = 1, Bez2 = 2, Bez3 = 3, Bez4 = 2);// sowohl Bez2 als auch Bez4 ergeben mit Ord = 2
Inc/Dec/Ord funktionieren dort auch (succ/pred)
Anleihe aus: [...] |
|
|
| System: Windows 8/10, XProfan X4 Programmieren, das spannendste Detektivspiel der Welt. | 09.01.2015 ▲ |
|
|
|