Ich möchte aber nicht, dass der Benutzer in die Konfiguration gehen muss und eine Änderung erzwingen muss, damit dann der Wert vorhanden ist.
Andersherum:
Wie kann ich es erzwingen, dass der Standardwert genutzt wird, bis der Benutzer etwas ändert?
Wie machst du das in deinen Modulen? Da sagst du auch nicht dem Benutzer, gehe in die Konfiguration und ändere irgendetwas, damit der Änderungen speichern Dialog auftritt, um dann die Änderungen zu übernehmen?
Ich habe bisher nie Spalten ergänzt, aber dafür neue Zeilen
Dazu prüfe ich im Applychanges die Eigenschaft, ergänze sie mit den ‚verbotenen‘ IPS_SetPropery und IPS_Applychanges und verlasse das Applychanges damit es keine Endlosschleife gibt. (Bis IPS 7.0)
Edit: Und dazu ein Kommentar im Code warum das so ist, damit @Dr.Niels es beim Review einfacher hat.
Die Strategie, auch wenn von @paresy, ist, die Funktion Migrate (ab IPS 7) zu benutzen.
Diese Funktion wird nur beim Start von IP-Symcon oder nach eine Modul-Update aufgerufen. Sie wird nicht beim erstmaligem Erstellen einer Instanz aufgerufen. Die gelieferte Persistenz ist unabhängig von der bereits im Create registrierten Properties/Attributen. Dadurch kann diese beliebig angepasst/korrigiert werden, sodass diese für die neuen Properties/Attribute passt. Dadurch können z.B. alte Properties (z.B. wegen einem Tippfehler) im Namen oder Inhalt korrigiert werden.