nochmals enum - diesmal rückwärts

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von SoEinVBler.

    nochmals enum - diesmal rückwärts

    Moin!
    in den letzten Tagen hatte ich schon Fragen zum Thema ENUM - doch diesesmal geht es in die umgekehrte Richtung.

    Ausgangssituation ist folgende

    VB.NET-Quellcode

    1. Public Enum Hierachie As Integer
    2. undefiniert = -1 ' von der Programmierung eingefügt
    3. unbekannt = 8 ' hier ist UNBEKANNT in den Tabellen hinterlegt!!!
    4. AnschlussleitungGSEW = 1
    5. Strassenentwässerung = 7
    6. Anschlusskanal = 13
    7. UebergabeGrundstueck = 14
    8. End Enum
    9. Dim MyHierachie as Hierachie = Hierachie.AnschlussleitungGSEW


    Dann hat MyHierachie den Wert=2

    Nun habe ich aber an anderer Stelle einen Zahlenwert 2 und würde gerne den Enum-Wert dazu haben. (ich hoffe das richtig beschrieben zu haben).

    Geht das irgendwie? Ich weiß nicht so ganz wonach ich suchen soll.

    Gruß Jan

    jan99 schrieb:

    Dann hat MyHierachie den Wert=2
    Nö.
    MyHierachie hat den Wert = 1.
    Wenn Du einen Enum-Member mit dem Wert 2 haben willst, musst Du einen einfügen:

    VB.NET-Quellcode

    1. Public Enum Hierachie As Integer
    2. undefiniert = -1
    3. AnschlussleitungGSEW = 1
    4. MeinNeuerEnumWert = 2 ' dieser hier
    5. Strassenentwässerung = 7
    6. unbekannt = 8
    7. Anschlusskanal = 13
    8. UebergabeGrundstueck = 14
    9. End Enum
    Ich hab die Werte mal der Größe nach sortiert.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo RodFromGermany,

    danke - aber ich mich (mal wieder) etwas vertan bei der Beschreibung - jetzt nochmal

    Dann hat MyHierachie den Wert=2


    Das war falsch.

    Wenn

    VB.NET-Quellcode

    1. Dim MyHierachie as Hierachie = Hierachie.AnschlussleitungGSEW


    Dann hat MyHierachie den Wert =1

    Nun habe ich an anderer Stelle den Wert = 7, der für die Straßenentwässerung steht.

    Meine Frage war nun...

    Kann ich irgendwie MyHierachie den Wert 7 zuweisen sodass diese später den Wert MyHierachie.Strassenentwässerung hat.

    Gruß Jan
    @jan99 Ganz easy:

    VB.NET-Quellcode

    1. MyHierachie as Hierachie = Hierachie.Strassenentwässerung
    Haben diese numerischen Werte eine besondere Bedeutung?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    in C# würde das so gehen.

    C#-Quellcode

    1. Hierachie MyHierachie = (Hierachie) 7;


    in VB.net vllt so?

    VB.NET-Quellcode

    1. Dim MyHierachie As Hierachie = CType(7, Hierachie)


    Edit: Aber verstehen warum du das so möchtest tue ich nicht.
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.

    Dksksm schrieb:

    verstärkt sich nur noch weiter.
    Das Gefühl habe ich auch.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Akanel schrieb:

    in C# würde das so gehen.

    C#-Quellcode

    1. Hierachie MyHierachie = (Hierachie) 7;


    in VB.net vllt so?

    VB.NET-Quellcode

    1. Dim MyHierachie As Hierachie = CType(7, Hierachie)


    Edit: Aber verstehen warum du das so möchtest tue ich nicht.


    Der Hintergrund der ganzen Sache ist folgender. Wir haben Tabellen im GIS-System die gewisse Eigenschaften definierten und wenn ich zum Beispiel einen Schacht anlege, dann werden via Code diese über Werte definiert.

    Wenn man nur mit Zahlen arbeitet ist das sehr fehleranfällig und auch schwer zu lesen. Manche Werte gibt es fast in jeder Tabelle - immer nur mit einer anderen Bedeutung.

    Nun lese ich vielleicht die Hierachie aus einem Schacht aus - dann bekomme ich einen Wert. Diesen würde ich nun gerne lieber als ENUM-Wert weiterführen.

    Verständlich?

    Jan

    jan99 schrieb:

    Diesen würde ich nun gerne lieber als ENUM-Wert weiterführen.
    Sehr gut.
    Doch: Wo ist das Problem?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ok, verstehe ich, vielleicht so

    VB.NET-Quellcode

    1. Private Function GetOSmodeEnum(ByVal j As Integer) As EnumLib.Systemvariablen.OSMODE
    2. Dim myEnum As EnumLib.Systemvariablen.OSMODE = EnumLib.Systemvariablen.OSMODE.Keiner 'Vordefinieren, falls der Wert kein Enum ist
    3. If [Enum].IsDefined(GetType(EnumLib.Systemvariablen.OSMODE), j) Then 'Prüfe ob der Wert ein Enum ist
    4. myEnum = CType(j, EnumLib.Systemvariablen.OSMODE) 'Enum aus Wert
    5. End If
    6. Return myEnum
    7. End Function
    @ErfinderDesRades Jou.
    Vielleicht sollte @jan99 mal ne vollständige und belastbare Aufgabenstellung posten.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!