Zwar verspätet, aber weil's doch interessant ist.
(04.07.2015 16:51 )Hasenfuss schrieb: Oder bleibt mir nur der Weg mit dem Löschen der alten registrierten Eventregistrierungsreferenz?
Ich glaube, dass bleibt uns vorerst so erhalten. Ob das in LV 2015 funktioniert, weis ich nicht ...
Eine Referenz, also auch das, was beim "Ereignisreferenz erzeugen" (also "Ereignisse registrieren") entsteht, ist immer etwas Eindeutiges. Das ist auch gut so. Und nur, was genau diese Referenz hat, darf auch zusammenarbeiten. Wenn du jetzt bei der Registrierung ein weiteres Event hinzufügst, entsteht automatisch eine ... neue Referenz!. Und da die anders ist als die alte, funktioniert die neue nicht mehr: das ist das, was du als Fehler siehst.
Folgendes muss man noch beachten:
Wenn du irgendein untypisiertes Element auf dem Blockdiagramm erzeugst, z.B. den Ereigniseingang auf einer Event-Struktur, dann wird genau in dem Moment, wenn du einen Draht anschließt dieses Element typisiert. Einmal typisiert, ist das Element für immer auf diesen Typ festgelegt. Eine automatische "Umtypisierung" gibt es nicht. - Ob es die nicht gibt, oder ob die LV-Entwickler die nicht integriert haben, weis ich nicht.
Zitat:Die Variante mit der FGV gefällt mir so am besten, weil ich sie so initialisieren kann, lesen darf und auch den case "Events löschen" einbauen kann, um die Events sauber auch wieder zu entfernen.
FGV's find' ich gut ...
(15.11.2015 14:52 )IchSelbst schrieb: Einmal typisiert, ist das Element für immer auf diesen Typ festgelegt.
Jetzt ist mir doch beim Durchlesen meines eigenen Textes was aufgefallen: siehe Zitat.
Was liegt da näher, als einen strikten Typ zu definieren. Strikte Typen haben nämlich den Vorteil, dass man sie "umtypisieren" kann: Alles, was dann mit diesem (strikten) Typ zusammenhängt, passt sich automatisch an - das ist ja eines der schönen Sachen bei LV.
Mach jetzt also folgendes:
Am Ausgang des Elementes "Ereignis registrieren" erstellt du eine Konstante, die du in einen strikten Typ umwandelst und unter einem Namen (nämlich dem Typen-Namen) speicherst. Dann erstellt du von diesem strikten Typ eine Konstante und hängst die an den Eingang von "Ereignis registrieren". Daraufhin wirst du den Knoten weder erweitern noch verkürzen können - was ja richtig so ist, weil er ja jetzt strikt ist. Jetzt musst du - aber nur einmalig - alle Elemente, die mit dieser Referenz verbunden sind, vom strikten Typ ableiten. Und zwar alles: den Ausgang der FGV und alle Eingänge an den Event-Strukturen.
Und jetzt wird's interessant:
Wenn die ein Ereignis hinzufügen willst, gehst du wie folgt vor:
* Trenne die strikte Konstante vom Eingang des Registrierelementes - nur trennen, nicht löschen. Auch den Ausgang musst du trennen (vom Tunnel der Case-Sequenz).
* Erweitere jetzt den Knoten um ein Ereignis.
* Erstelle am Ausgang des Knotens eine Konstante und schneide diese Konstante mit Ctrl-X aus.
* Öffne die strikte Typdefinition, die zu zuvor erstellt hat, und die du vom Eingang entfernt hast.
* Füge die mit Ctrl-X ausgeschnittene neu Referenz(!) ein und lösche die alte Referenz heraus. Jetzt die Typdefinition speichern.
* Verbinde das sich noch immer im Blockdiagramm befindende Element wieder mit dem Eingang des Knotens - der jetzt wieder strikt wird und nicht erweiterbar wird.
* Verbinde den Ausgang des Knotens wieder mit dem Tunnel der Case-Sequenz.
Und schon geht wieder überall alles. Weil im ganzen Programm, also auch in den anderen VIs, alles auf strikt steht, entsteht nirgendwo ein Fehler.