Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Neuer Datentyp erstellen


Delete - Di 14.10.03 09:59
Titel: Neuer Datentyp erstellen
Ich möchte einen neuen Datentyp erstellen.

Der DatenTyp ist ähnlich wie Boolean, nur dass er vier möglichkeiten bereitstellen muss. und die sind:
- passed
- failed
- performed
- none

wie kann ich einen solchen Datentyp erstellen, bzw. wie kann ich den Boolean verändern und anpassen??


Shark - Di 14.10.03 10:16

Versuch es mit einer Menge, dann kannst Du mit case of abfragen...


Quelltext
1:
type TState = (stPassed,stFailed,stPerformed,stNone);                    


smiegel - Di 14.10.03 10:23

Hallo,

@Shark

Das ist keine Menge sondern ein Aufzählungstyp.

Eine Menge wird in der Form

Delphi-Quelltext
1:
2:
type 
  TState = set of (stPassed, stFailed, stPerformed, stNone);

deklariert.


Delete - Di 14.10.03 10:31

Wie muss ich den Datentyp definieren, damit ich sie in einer Case anweisung auswerten kann??

Fehlermeldung:[Fehler] mainUnit.pas(370): Ordinaltyp erforderlich


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
    case TestState of
      stPassed: ...;
      stFailed: ...;
      stPerformed: ...;
      stNone: Status := ...';
    end;


Klabautermann - Di 14.10.03 10:41

Hi,
DaBass hat folgendes geschrieben:
Wie muss ich den Datentyp definieren, damit ich sie in einer Case anweisung auswerten kann??

da kannst du den Aufzählungstyp von Shark nehmen.

Gruß
Klabautermann


maximus - Di 14.10.03 10:45

Wenn du es nicht als menge definierst, sondern als enum, muss es gehen:


Delphi-Quelltext
1:
type TState = (stPassed,stFailed,stPerformed,stNone);                    


mfg.


PS: wenn du sets (mengen) verwenden willst, dann musst du if benutzen:


Delphi-Quelltext
1:
if stFailed in testSTate then makeIt;                    


Delete - Di 14.10.03 10:51

vielen dank, es funktionert einwandfrei


Shark - Di 14.10.03 11:06

Ja es ist ein Aufzählungstyp! :oops:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
type TState = (stPassed, stFailed, stPerformed, stNone);

var myState: TState;

myState := stNone;
case myState of
stNone:...;
...

else
...
end;