Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
Ein Enum ist doch im Prinzip nichts anderes, als ein numerisches Feld, in das man keine Werte eingeben, sondern aus vorgefertigten Werten einen aussuchen kann. Zur Vereinfachung für den Bediener wurde diesen numerischen Werten einfach ein Name zugewiesen.
Das müsste man doch in etwa so sagen können, oder?
Nun zu meiner Frage:
Ich möchte jetzt keine Dezimal-Werte, sondern Hexwerte, und die auch nicht einfach von 0-F, sondern selber festlegen können. Also Zeile1 sei 0, Zeile2 sei 3 und Zeile3 sei A, oder so in der Richtung.
Geht das irgendwie? Oder muss ich mir da immer eine Case-Struktur hinter den Enum legen, der mir dann aus dem 2er des Enums die 3 macht, die ich will, um bei obigem Beispiel zu bleiben?
Danke und Gruß
Dommas
02.08.2010, 09:00 (Dieser Beitrag wurde zuletzt bearbeitet: 02.08.2010 09:02 von kaiman.)
Ich weiß nicht, ob das mit einem Enum geht, aber du könntest das doch einfach in einem konstanten Array ablegen und dann entsprechend indizieren.
So hast du dann doch das gleiche.
Element 0: 0x0
Element 1: 0x3
Element 2: 0xA
.
.
.
etc.
Gruß, Kai
EDIT: Das Array könntest du wiederum mit einem Enum indizieren. Ist zwar ein Umweg, aber müsste doch eigentl. gehen...
Enums sind für nur begrenzt sinnvoll als Control für den Bediener. Von der Funktion ist der Ring eher was du suchst, da kannst du nicht sequentielle Werte mit Namen verknüpfen. Allerdings kannst du den nicht ordentlich als (strikt) Typedef speichern (Konstantenproblem). Intern ist da der Enum mglw. wieder besser.
Dem Menüring kann man auch als Anzeigeformat Hex zuweisen.
Bei Objekten wie schon erwähnt Sequenzielle Werte abschalten und dann die eigenen Werte angeben.
Gruß SeBa
Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.
Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.
Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
Ich muss das Thema hier nochmal kurz aufgreifen, da ich selbst ein ähnliches Problem habe.
Ich kommunizieren über LabView mit Messkarten von Meilhaus. Wenn ich einen Ausgang setzen oder rücksetzen möchte, muss ich den ganzen Port (8 Aus- bzw. Eingänge) machen. Dazu muss ich den aktuellen Zustand des Port ODER - bzw. UND verknüpfen mit dem Wert den ich brauche, damit ich die anderen Bits nicht verändere, sondern nur den Aus- bzw. Eingang, den ich brauche.
Da das ein etwas größeres Projekt werden soll, will ich ungern die reinen Zahlen mit denen verknüpft wird in meinem Quelltext sehen, sondern am liebsten nur quasi die Beschreibung, die hinter der Zahl steckt.
z.B.:
Set A1 - 1
Set A2 - 2
Set A5 - 16
Release A1 - 254
Release A2 - 253
Release A5 - 239
Es ist wohl nicht möglich den Wert in einem Enum frei zu wählen, so wie ich das hier verstanden habe.
Was könnte ich denn stattdessen machen? Ist ein Array einer Stuktur mit String und Zahl sinnvoll oder was meint ihr?
Danke und Gruß
TDO
05.05.2014, 08:22 (Dieser Beitrag wurde zuletzt bearbeitet: 05.05.2014 08:23 von GerdW.)
bei deinem Ansatz müsstest du ein Enum erstellen, in dem alle 256 möglichen Bitkombinationen entsprechend mit "Namen" verknüpft werden. Was für ein Aufwand…
Ich habe mir mal ein subVI für die user.lib geschrieben, das so aussieht:
(Im TRUE-Case befindet sich ein OR statt NOT/AND. "bool" entscheidet über Setzen/Löschen des Bits.)
An die "Bitnummer" kannst du auch ein Enum mit "A1" bis "A8" (entsprechend der Bitnummer 0 bis 7) anschließen…