tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
1524
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Conners Conners ist offline Mitglied Gold
    Registriert seit
    Apr 2008
    Beiträge
    102
    Hi,

    ich brauch nochmal eure Hilfe. Undzwar hab ich vor so eine Art Zustandsmaschine für mein Programm zu erstellen, indem es logischerweise dann ca. 20-30 Zustände gibt.

    Ich könnte ja einfach n String erstellen und diesem immer einen Zustand geben, aber das will ich nicht; ich möchte gerne, dass ich eine art enumeration hab, so z.B.

    Code :
    1
    2
    3
    4
    5
    6
    7
    
    enum myProject_States{
    ONLINE,
    OFFLINE,
    RUNNING,
    IDLE,
    ....
    }

    Ich habs schon probiert, allerdings krieg ich die Abfrage irgendwie nur über integers hin, indem ich z.B. eine integerVariable erstell und im Code z.B. folgendes schreib:
    int MyProject_State = (int)myProject_States.ONLINE;

    wo ist mein denkfehler ? irgendwie hab ich auch das gefühl in C war das mit den enums ganz anders.

    ich möchte gerne, dass ich im Code so programmieren könnte, weil mir persönlich so eine Denkweise naheliegt:

    Code :
    1
    2
    3
    4
    5
    6
    
    ...
    if (myProject_State == IDLE)
    {
            doSomething(...);
            myProject_State = RUNNING;
    }

    Ich weiß, wenn ich das mit einem String machen würde, wärs einfacher, aber da wären noch die nervigen anführungsstriche und ich hab früher in C immer mit enums so programmiert und möchte das gerne beibehalten.
    Evtl. mach ich auch einfach nur was komplett verkehrt.


    Gruß
    Conners
     

  2. #2
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    Enumerations sind typisiert. Du musst also der Zustandsvariablen auch den richtigen Typ verpassen und bei Vergleichen den Typ mit angeben:
    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    
    myProject_States MyProject_State = myProject_States.ONLINE;
     
    // ..
     
    if(  MyProject_State == myProject_States.IDLE )
    {
        // ...
    }
    Gruß
    MCoder
     
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  3. #3
    Conners Conners ist offline Mitglied Gold
    Registriert seit
    Apr 2008
    Beiträge
    102
    schade...

    Gibts da keinen von mir aus auch codemäßig aufwendigen Trick, wie man das umgehen könnte? also dass man nur schreiben muss state = ONLINE ... etc. ?
    Wenn ich mehrere Zustandsmaschinen einbau, muss ichs eh so machen, aber ich hab nur eine einzige.

    Trotzdem schonmal danke für den Hinweis
     

  4. #4
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    Die Alternative wäre halt nur das Typecasting, aber ansonsten denke ich nicht, dass das noch irgendwie anders geht.

    Gruß
    MCoder
     
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  5. #5
    Avatar von Spyke
    Spyke Spyke ist offline Capoeirista
    Registriert seit
    Oct 2002
    Beiträge
    931
    Zitat Zitat von Conners Beitrag anzeigen
    Gibts da keinen von mir aus auch codemäßig aufwendigen Trick, wie man das umgehen könnte? also dass man nur schreiben muss state = ONLINE ... etc. ?
    Also ob nun state = ONLINE oder state = StateType.ONLINE.
    Ich sehe da kein wirklichen mehr Aufwand drin und versteh auch nicht wirklich was du nun anders haben willst

    oder suchst du eher sowas:
    Code :
    1
    2
    3
    4
    5
    6
    7
    
    enum StateType
    {
        IrgendNenStatus=1
    }
    ...
    Enum.IsDefined(typeof(StateType), 1); //true
    Enum.IsDefined(typeof(StateType), 2); //false
     
    www.iv-interactive.de - Projektewebsite
    WikiParser - aktuelles Projekt

  6. #6
    Conners Conners ist offline Mitglied Gold
    Registriert seit
    Apr 2008
    Beiträge
    102
    Es geht nicht um den Aufwand, sondern darum, dass ich das vorher in C/C++ ähnlich gemacht hab. Aber so wie es zur Zeit ist, ists auch super.

    Ich bedanke mich.

    Schöne Grüße
    Conners
     

Ähnliche Themen

  1. enum
    Von JavaForever im Forum Java
    Antworten: 20
    Letzter Beitrag: 07.04.10, 12:55
  2. enum in db2
    Von socke999 im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 01.12.08, 07:11
  3. enum kombinieren
    Von gigx im Forum Algorithmen & Datenstrukturen mit Java
    Antworten: 3
    Letzter Beitrag: 17.09.08, 15:27
  4. enum
    Von lernen.2007 im Forum Java
    Antworten: 1
    Letzter Beitrag: 20.11.05, 18:48
  5. enum
    Von rauch_c im Forum .NET Archiv
    Antworten: 5
    Letzter Beitrag: 11.05.04, 09:28