RegisterVariable* vs MaintainVariable

Hallo,

ich habe irgendwie immer noch so meine Verständnisschwierigkeiten, was die Modulfunktionen RegisterVariable(Boolean, Integer, Float, String) und MaintainVariable angeht. Kann mir jemand den entscheidenden Unterschied bzw. den Vorteil der RegisterVariable-Funktionen gegenüber der MaintainVariable-Funktion erklären?

Für mich ist der wesentliche Unterschied, dass MaintainVariable() die einzige Möglichkeit ist, um bestehende Statusvariablen zu löschen. Was das Erzeugen der Variablen angeht, sind doch beide Funktionen gleichwertig oder nicht?

Worüber ich auch immer wieder stolpere ist dieser Hinweis in der Doku zu den RegisterVariable-Funktionen:

Diese Funktion kann auch aufgerufen werden wenn die Variable bereits existiert. In diesem Fall wird ausschließlich das Profil aktualisiert, sofern dieses abweichend ist.

Ja, ich kann die Funktion erneut aufrufen. Das einzige, was sie jedoch tut, ist mir die VariablenID zurückzugeben. Dass ein geändertes Variablenprofil wieder auf den Default zurückgesetzt wird, war bei mir noch nie der Fall.
Somit wäre der einzige Unterschied/Vorteil dieser Funktionen aus meiner Sicht auch nicht gegeben. Oder übersehe ich irgendwas?

Gruß
Slummi

Der Unterschied ist tatsächlich einfach, dass MaintainVariable auch löschen kann. Wenn du erstellst oder aktualisierst, sind die Funktionen äquivalent.

Beim Profil wird das Standardprofil aktualisiert, das benutzerdefinierte Profil wird allerdings nicht angerührt. Falls dein Modul beispielsweise mehrere Modus hat, kannst du das Standardprofil einer gemeinsamen Variable passend wechseln. Wenn ein Benutzer allerdings ein Profil gesetzt hat, kannst du dies nicht löschen, das ist auch so vorgesehen.

Ah, jetzt macht es Klick. :slight_smile:
Ich habe mich auch schon immer gefragt, warum man das Profil überschreiben sollte, wenn der User ein anderes gewählt hat. Ans Standardprofil habe ich nie gedacht.

Ich nehme an, dass MaintainVariable() ebenfalls das Standardprofil aktualisiert? Die VariablenID wird aber - anders als bei den RegisterVariable*-Funktionen - nicht zurückgegeben, oder?

Noch eine Frage bzgl. der Wartung von Modul-Profilen:
Hat hierüber ebenfalls ausschließlich der User die Hoheit oder darf ein Modul von sich aus sicherstellen, dass die Modul-Profile den Vorgaben des Moduls entsprechen und etwaige Änderungen des Anwenders rückgängig machen?

Gleiche Frage bzgl. des Löschens von Modul-Profilen:
Es ist ja gängige Praxsis, dass Module beim Löschen der letzten Instanz prüfen, ob die Modul-Profile noch genutzt werden bzw. es werden für jede Instanz eigene Profile erstellt (wovon ich persönlich nicht so der Fan bin). Dürfte man die Modul-Profile auch ohne Prüfung löschen, weil sie ja Bestandteil des Moduls sind oder müssen sie in jedem Fall erhalten bleiben, wenn der User sie noch anderweitg (sprich außerhalb des Moduls) nutzt?

Ich kann es nicht mit absoluter Sicherheit sagen, würde aber stark davon ausgehen, dass MaintainVariable ebenfalls das Profil aktualisiert.

Deine Module sind in deiner Hoheit. Du kannst sie also seitens der Review-Richtlinien anpassen, bearbeiten und löschen, wie es für deinen Ablauf sinnvoll ist.