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!
' schrieb:Gratulation! Jackpoint geknackt! Also für mein Begriffe ist das definitiv die Lösung, nach der wir hier gesucht und um die herum wir uns alle bewegt haben...
@Dennis:
Bitte sofort den "LVF-Grünschnabel"-Status von VDB ändern! Es kommt doch nicht auf Quantität von Beiträgen, sondern auf die Qualität an!
das sind alles schöne Lösungen, gefällt mir gut. Ich glaube aber, der Grund dafür, dass man nicht die Strings (selbstgewählten Titel) des Tabs (=Enum) anspringen kann ist der, dass das Risiko ungleich höher ist, einen Schreibfehler im String (Titel) zu machen! Dann findet auch VDBs Lösung nicht die richtige Seite! Dass ist hier im speziellen nicht besonders wichtig, weil nur wenige Strings verwendet werden. Generell gilt aber, dass man z.B. den nächsten State einer State Machine auch lieber mit Enums anspringt, die man schön als StrictTypeDef speichern kann. Eine Änderung/Erweiterung des Enums um zusätzliche States wird dann sofort überall wirksam. Wenn man das mit Strings machen würde (theoretisch und praktisch möglich), bestünde die Gefahr, dass man im String Schreibfehler macht (im Case oder in der Konstante), und schon funktioniert die Statemachine nicht mehr. Man verwendet den "State-String" vielleicht 25 Mal und macht einen Schreibfehler...den zu finden wird unter Umständen schwierig. Und dann bleibt man doch lieber generell bei Enums/numerischen Werten, da ist man auf der sicheren Seite...
Gruss
Achim
EDIT: Prinzipiell hab ich nichts gegen eine Status-Änderung von VDB...wer wäre ich denn, würde ich mir ein Urteil erlauben...aber wer soll denn die Qualität der Beiträge bewerten? Die Mods? Wer bewertet denn die? Seid mir nicht böse, aber das wär ja frech! Dann doch lieber bei der Anzahl bleiben...wobei auch dass nicht optimal ist...dazu gibt es einfach zu viele überflüssige Kommentare im Forum...aaahhhh..selbst ins Knie geschossen...hab mir doch ein Urteil erlaubt....
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Zitat:das sind alles schöne Lösungen, gefällt mir gut. Ich glaube aber, der Grund dafür, dass man nicht die Strings (selbstgewählten Titel) des Tabs (=Enum) anspringen kann ist der, dass das Risiko ungleich höher ist, einen Schreibfehler im String (Titel) zu machen! Dann findet auch VDBs Lösung nicht die richtige Seite! Dass ist hier im speziellen nicht besonders wichtig, weil nur wenige Strings verwendet werden. Generell gilt aber, dass man z.B. den nächsten State einer State Machine auch lieber mit Enums anspringt, die man schön als StrictTypeDef speichern kann. Eine Änderung/Erweiterung des Enums um zusätzliche States wird dann sofort überall wirksam. Wenn man das mit Strings machen würde (theoretisch und praktisch möglich), bestünde die Gefahr, dass man im String Schreibfehler macht (im Case oder in der Konstante), und schon funktioniert die Statemachine nicht mehr. Man verwendet den "State-String" vielleicht 25 Mal und macht einen Schreibfehler...den zu finden wird unter Umständen schwierig. Und dann bleibt man doch lieber generell bei Enums/numerischen Werten, da ist man auf der sicheren Seite...
Da gib ich dir völlig recht. Für sowas sollte es immer einen Default-case geben mit Assertion (z.B. MessageBox oder so) um auf den Fehler hin zu weisen. Meine Lösung setzt glaube ich auch den Error Out wenn der String nicht im Enum vorhanden ist.
Das ist ja genau das, was wir brauchten! Danke VDB!
Dieser Hilfetext ist der Schlüssel...:
"Wenn Sie Standard 1 mit einer Enum verbinden, wird nach Untereinträgen gesucht, die mit dem Text der Enum übereinstimmen, und es wird der dazugehörige Zahlenwert ausgegeben."
Gruß und danke an alle und ich hoffe, alle könne mit dieser Lösung zukünftig was anfangen!
Mit einem freundlichen Wort und etwas Gewalt erreicht man viel mehr als nur mit einem freundlichen Wort. [...Marcus zu Lennier, B5]
14.02.2007, 00:24 (Dieser Beitrag wurde zuletzt bearbeitet: 14.02.2007 00:30 von Lucki.)
Das VI von VDO regt mich zu einer kleinen Nachtübung an. Die Frage ist, ob es in umgekehrter Richtung möglich ist, aus einem Enum-Wert den aktuellen String bzw. alle Strings auszulesen, was mit dem Eigenschaftsknoten ja nicht geht. (Man braucht es vielleicht nie, aber immerhin ist es gut zu wissen daß es geht)
Mit dem VI werden alle Strings gelesen, und zwar der zum Wert 0 gehörende String zuerst:
[attachment=31598:Enum2String.png]
Ja, genau das. Das Board funktionierte aber zu mitternächtlicher Stunde nicht mehr richtig, erst ließ sich der Beitrag nicht hochladen, dann war er gleich zweimal da, wenn ich aber die Bilder des einen weglöschte, waren die im anderen mit weg. Denis hat jetzt den doppelten Eintrag gelöscht, und, wie bei meinen Bemühungen auch, die Bilder sind weg.
Das kleine VI beruht auf der obigen Funktion, liest aber alle Strings eines Enum aus. Der Trick dabei: Wenn man beim letzten Enum-Element mit der Funktion "+1" "höher" zählt, geht es nicht höher, sondern man kommt wieder zum Element 0. Das benutze ich, um in der while-Schleife abzubrechen, wenn alle Elemente in Strings konvertiert wurden. Oder gibt es da noch etwas Einfacheres?
14.02.2007, 09:30 (Dieser Beitrag wurde zuletzt bearbeitet: 14.02.2007 09:31 von Achim.)
' schrieb:...wenn alle Elemente in Strings konvertiert wurden
Aber das liefert ein PropertyNode [Strings] doch schon...siehe Screenshot oben! Warum etwas programmieren, was LV schon automatisch zur Verfügung stellt? Für einzelne Strings (nämlich den gerade aktiven) ist VDBs Lösung optimal, aber alle anderen auch auslesen ist völlig unnötig!
A.
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
14.02.2007, 09:56 (Dieser Beitrag wurde zuletzt bearbeitet: 14.02.2007 10:01 von Lucki.)
' schrieb:Aber das liefert ein PropertyNode [Strings] doch schon...siehe Screenshot oben! Warum etwas programmieren, was LV schon automatisch zur Verfügung stellt? Für einzelne Strings (nämlich den gerade aktiven) ist VDBs Lösung optimal, aber alle anderen auch auslesen ist völlig unnötig!
A.
Bin peinlich berührt, ja, Du hast recht. So kam es dazu: Eine Registerkarte stellt sich sich im Blockschaltbild als Enum dar. Erstellt man davon einen Eigenschaftsknoten, gibt es tatsächliche keine Eigenschaft "Strings[]". Deshalb habe ich geglaubt, es gibt diese Eigenschaft bei Enums generell nicht.
Naja, vielleicht ist das VI noch gut, alle Tab-Bezeichnungen auszulesen. (Zumindest solange Du nicht nachweist, daß es auch dafür etwas gibt).