Announcement

Collapse
No announcement yet.

Delphi Sets to Integer / Set of als Integer anzeigen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Delphi Sets to Integer / Set of als Integer anzeigen

    Hallo,

    wie kann ich ein "set of Irgendwas" als Integer darstellen/speichern? Hintergrund ist folgender: Ich möchte den Wert eines Sets in einer Datenbankspalte speichern. Über die Google Suche bin ich auf die Funktionen SetToString und StringToSet gestoßen. Allerdings möchte ich in meiner DB nicht den "Stringanteil" speichern, sondern einfach nur eine Zahl. Sets werden soweit ich weis eh als "Zahl" von Delphi behandelt. Aber wie komme ich da ran? ord(MeinSet) oder Integer(MeinSet) funktioniert nicht.

    mfg
    M.Pannier

  • #2
    Warum nicht den String dann mit StrToInt umwandeln?
    Christian

    Comment


    • #3
      Weil der string wirklich ein string ist ;-)

      z.B.: TFontStyle := [fsBold]; --> SetToString(TFontStyle) ergibt den String '[fsBold]'. Im Prinzip das was auch in der Formulardatei vom Delphi steht.

      Noch besser: Wenn man z.B. TFontStyle oder mein Set von oben über "überwachte Ausdrücke" anschaut und hier nicht "Vorgabe", sondern "Speicherauszug" auswählt, dann bekommt man genau das was ich haben möchte. Aber wie?

      Comment


      • #4
        Originally posted by M.Pannier View Post
        Noch besser: Wenn man z.B. TFontStyle oder mein Set von oben über "überwachte Ausdrücke" anschaut und hier nicht "Vorgabe", sondern "Speicherauszug" auswählt, dann bekommt man genau das was ich haben möchte. Aber wie?
        Naja, das ist wohl nur bedingt so richtig. Das Problem ist ja, das ein Set eine variable Anzahl von Elementen beinhalten kann, unter Umständen so viel, dass das gar nicht mehr in einen Int 'passt'.

        Ich kenne da nichts fertiges dafür. Ich würde eine auf den Typ zugeschnittene Konvertierungsfunktion programmieren und - je nach Menge der maximal zulässigen Elemente - entweder auf integer codieren :

        Type Farben = Set Of (rot,gruen,blau,schwarz)

        rot=1
        gruen=2
        blau=4
        schwarz=8

        Damit kann man auch Mehrfachnennungen sicher codieren (5 = rot+blau)

        Oder bei größeren Mengen dann ggf. doch in Strings konvertieren, wobei auch hier die maximale Länge ein Problem ist.

        Viel Erfolg
        Tino
        Ich habs gleich!
        ... sagte der Programmierer.

        Comment


        • #5
          Danke für die Antwort.
          Delphi macht es doch intern schon so, oder? In allen Tut's die man dazu liest können Set of eh nur mit einer bestimmten Anzahl von Elementen erstellt werden. Dies würde bei mir auch reichen. Soll es da wirklich nichts fertiges geben?

          Comment


          • #6
            Ich habe eine Lösung gefunden (Jedi sei Dank):
            JclSetToInt und jclIntToSet aus der Unit JclRTTI

            Comment

            Working...
            X