[Updatewunsch]: SICHERN sichert keine Variabeln

Bugreports und Updatewünsche an die Firma contronics
Keine allgemeinen Fragen!

Moderator: Co-Administratoren

Antworten
mfelber
Beiträge: 292
Registriert: 08.10.2006, 11:30
Wohnort: Elmshorn
Danksagung erhalten: 1 Mal

[Updatewunsch]: SICHERN sichert keine Variabeln

Beitrag von mfelber » 13.11.2006, 08:22

Moin!

Ich verwende SICHERN und LADEN in der *INIT und *END ... und mußte gerade feststellen, dass dabei keine Varbiablen gsichert/geladen werden.

Das ist ziemlich lästig und ich würde mich sehr freuen, wenn das möglichst bald abgestellt werden könnte.

Hintergrund: Ich schreibe die Laufzeiten vom Heizungsbrenner, HZG-Pumpe und Warmwasserpumpe mit. Dabei möchte ich gerne auf meiner Statusseite die kummulierten Laufzeiten für heute, gestern und vorgestern sehen. Damit nicht die Objektliste überläuft (das wären jetzt ja schon sechs x drei Objekte), hab ich das mit sechs Variabeln in jeweils einem Objekt gemacht. Bei jedem Neustart (was ja beim Programmieren recht häufig vorkommt ;-)) sind die Inhalte der Variabeln weg und meine ganzen Stringoperationen laufen daneben.

Ich weiß, dass man das mit einem PHP-Script lösen könnte (was ich jetzt wohl auch machen muss), jedoch wäre eine integrierte Lösung schon einfacher und schöner. Vorallem gehe ich davon aus, dass ein "Snapshot" schon auch die Variabeln berücksichtigt.

VG ... Michael

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Beitrag von buempi » 13.11.2006, 11:54

Wenn Du mit ALL sicherst, werden nur die Objekte, keine Veriablen gesichert. Du kannst aber mit SICHERN/LADEN jede benötigte Variable einzeln sichern und später wieder laden; also

SICHERN("MeinMakro.MeineVariable1,MeinMakro.MeineVariable2")

Grüsse

Bümpi

mfelber
Beiträge: 292
Registriert: 08.10.2006, 11:30
Wohnort: Elmshorn
Danksagung erhalten: 1 Mal

Beitrag von mfelber » 13.11.2006, 11:58

Moin Bümpi!

Vielen Dank für den Hinweis! Allerdings kommt er um ungefähr ne Stunde zu spät ;-) Ich hab das jetzt erstmal anders gelöst: In *END schreibe ich jetzt eine Batch-Datei, die dann bei *INIT aufgerufen wird. Da setze ich dann über das CLI-Prog. die Werte.

Werde ich aber wieder umstellen, ist einfacher mit den Variablen.

VG ... Michael

anhschmidt
Beiträge: 16
Registriert: 29.12.2006, 20:13

Beitrag von anhschmidt » 29.12.2006, 20:22

Hallo!

zunächst Danke! für eure Beiträge. War auch schon darauf gekommen, dass die am Objekt hängenden Variablen nicht gesichert werden.

Dies IST AUCH MEIN UpdateWunsch!

Aber noch was: Sichert man zB. in dem *END Makro die Objekte *ALL dann sind die Variablen "wieder" weg !!
Also z.Z. -- Erst *All sichern und dann die noch notwendigen Variablen hinterher.

Dann lädt Laden("*ALL") auch die Objekte mit den anhängigen Variablen.
Aber nicht das eigentliche Objekt (z.B. MeinMakro) bei der Sicherung der Variablen mit aufführen - dann ist "alles wieder hin" - daran bin ich ne Weile gescheitert ...

VG ... Andreas

contronics-RK
Beiträge: 954
Registriert: 18.07.2006, 15:58

Beitrag von contronics-RK » 02.01.2007, 17:03

ok, wir haben das mal notiert.
Die *ALL Option wird in den nächsten Updates so verändert, dass auch die Variablen gespeichert/geladen werden.

Freundliche Grüsse und ein frohes neues Jahr
contronics - Ralph Krapoth

gwanjek
Beiträge: 76
Registriert: 18.12.2006, 17:32
Wohnort: Ostseeküste

Beitrag von gwanjek » 02.01.2007, 19:22

Hallo,
bei allem Verständnis für diesen Wunsch (übrigens auch bei mir selbst), bitte NICHT pauschal gleich alle Variablen mit dem (bisherigen) ALL-Befehl sichern, denn das kann / wird m.E. zu neuen Problemen führen.

So existieren bei mir z.B. Variablen, die zur Laufzeit bzw. im INI-Objekt inhaltlich aufgebaut werden, je nach aktueller Verfügbarkeit von Komponenten (Stichwort Webserver, Datenbank usw) bzw. dienen als Rechen-, Statistik- und Statusvariablen, die bisher "on the fly" bei Neustart in den Initialzustand gebracht werden (auf "Wert bei Start"), und bei der vorgeschlagenen Änderung, so ALL beim Sichern verwendet wird und das vorgeschlagene Verhalten hätte, jedesmal erst bewußt und individuell jede einzelne Variable bei Start zurückgesetzt werden müßten. Mit Grauen stell ich mir die Fehlersuche nach Laufzeitfehlern vor, verursacht durch dummerweise automatisch gespeicherte / geladene Variableninhalte, erst Recht bei syntaktisch richtigen, jedoch "blödsinnigen Werten" in Statistikwerten usw., wo man dann erst auf diese Ursache kommen muß!

Vorschlag:
- ALL bleibt speichernd wie gehabt nur für Objekte zuständig
- ein neuer Befehl (ALLV o.ä.) sichert auch alle Variablen

oder, m.E. noch besser, weil logischer:

Drei Befehle ALL, ALLV, ALLO mit folgendem Verhalten, dann aber im Verhalten identisch im END und im INI-Objekt:

ALL lädt (wie bisher) und sichert (neu) ALLES, also Objekte und Variablen,
ALLV macht selbiges NUR mit Variablen
ALLO sichert/lädt NUR die Inhalte von Objekten

Dann bliebe immer noch die Option, im END-Objekt mit ALLO alle Objekte und dann noch spezifische Variablen zu sichern, welche beim Laden mit ALL wie gehabt und so als gespeicherte Werte vorhanden mit reingeholt würden beim Start, jedoch eben nur diese.

Was dann noch fehlt ist natürlich eine Möglichkeit / ein Befehl, die "Startwerte" der Variablen oder Objekte in der Anwendung bewußt wieder einstellen zu können. Aber eben nicht nur im INI-Objekt, sondern beliebig wenn gewollt. Das betrifft dann natürlich ebenfalls individuelle Werte (Objekte, Variablen), alle Objekte, alle Variablen oder Alle. Mir schwebt da sowas wie RESET() als 3. Befehl in Ergänzung zum Laden und Sichern vor.

Also sowas:
SICHERN/LADEN/RESET ([meinobjekt, meinobjekt.meinevariable, *ALLO, *ALLV, *ALL])

Gruß Gerd

anhschmidt
Beiträge: 16
Registriert: 29.12.2006, 20:13

Beitrag von anhschmidt » 02.01.2007, 19:53

Hallo,

schön, daß hier eine Diskussion zum Thema Sichern / Laden entstanden ist.
Nach (weiterem) Nachdenken und aktuellen Prog.-Aufgaben würde ich mich im Prinzip den von Gerd gemachten Vorschlägen anschließen.

@Gerd - zu deinem Vorschlag:

- Es ist klar, dass man / du / wir manche Variablen speichern andere eben nicht speichern wollen - da zur Laufzeit benutzt und als gespeicherter Wert z.T. unsinnig oder gar falsch sein kann.

Vieleicht kann man dies auch so formulieren, daß:

1. Im Standard Falle (*All) alle Objektzustände gesichert werden.
2. Eine Option im Objekt (z.B. Save_Vars) das Sichern der "anhängigen Variablen" für dieses Objekt einschaltet.
3. Wenn Objekte mit Variablen gesicher wurden, diese mit *All auch incl. der Variablen Werte geladen werden.
4. die z.Z. existierenden Varianten von Sicher und Laden bleiben (kompatibel) erhalten.

@Ralf: Du / Ihr solltet vieleicht nach einer (aus der Erfahrung eurer Projekte) --- "günstige - allgemeine" - Lösung suchen. ...; Und da es sich sicher um eine Serialisierung eines Objektes handelt könnte man ja mal über das XML-Format zum Sichern/Laden nachdenken - was ein Debugging dann auch noch vereinfacht.

Soviel für Heute --

Allen noch (nachträglich) ein gesundes und erfolgreiches 2007

Vg
Andreas

contronics-RK
Beiträge: 954
Registriert: 18.07.2006, 15:58

Beitrag von contronics-RK » 09.01.2007, 11:46

Danke für die rege Beteiligung zu diesem Thema.
Die Bedenken, dass nicht einfach alle Variablen mitgesichert werden sollten sind sehr gerechtfertigt. Wir haben es wie in eingen Beiträgen angeregt realisiert.
Es gibt jetzt in der aktuellen Version die Möglichkeit als Parameter beim Sichern *ALLV anzugeben. Mit diesem Parameter werden dann alle Objekte und Variablen gesichert. In den Fällen, in denen das nicht gewünscht ist können wie gehabt die Objekte mit *ALL und bestimmte Variablen dann einzeln gespeichert werden.
Bei Laden gibt es keinen Unterschied, mit der Anweisung LADEN mit Parameter *ALL werden alle gespeicherten Werte (Objekte und Variablen) geladen.

Freundliche Grüsse
contronics- Ralph Krapoth

Antworten

Zurück zu „homeputer Studio / Standard: Bugs & Updatewünsche“