Hallo Bümpi
Ich möchte mich mal wieder zu dem leidigen Thema melden. Erstmal wie immer vielen DANK. Also ich denke ich habe das ja denn alles einigermaßen richtig vertsanden , wollte es ja auch nur noch mit meinen gedankengängen zu papier bringen
Allerdings eine Sache möchte ich nochmal verinnerlichen , für mich so und zwar betrifft es folgene Zeilen nochmal:
wenn Uhrzeit = "00:00:00" dann
wenn Aktor eingeschaltet dann
// 24:00:00 geht nicht!
Laufzeit := Laufzeit + "23:59:59" - Startzeit + "00:00:01"
endewenn
LaufzeitGestern := Laufzeit
LaufzeitHeute := "00:00:00"
Laufzeit := "00:00:00"
Startzeit := "00:00:00"
endewenn
Ich weis nicht ob da richtig bin? sehe ich das richtig das der zweite wenn-Block wenn Aktor eingeschaltet dann Laufzeit..... nur ausgeführt wird wenn der Aktor auch eingeschaltet ist?
Und wenn er nicht eingeschaltet wird , wird dann der zweite wenn Block gar nicht ausgeführt.
Würde bedeuten das das Makro aber den ersten wenn Block durcharbeitet. Also könnte man eine wenn Bedingung in ein wenn Makro laufen lassen , welche aber nicht ausgeführt , wenn sie nicht erfüllt wird aber der rest läuft trotzdem weiter !?
Ich hoffe ich habe das verständlich rübergebracht , jeder denk ja anders.
Also bis dann
Gruss Jörg
Programmieren mit Variablen
Moderator: Co-Administratoren
-
- Ehrenmitglied
- Beiträge: 12194
- Registriert: 29.07.2006, 15:58
- Wohnort: Schweiz
- Danksagung erhalten: 5 Mal
Re: Programmieren mit Variablen
Hallo Jörg
Ich glaube, du hast es richtig verstanden: Ein WENN und das ENDEWENN "auf gleicher Ebene" gehören immer zusammen. Falls das, was in einer WENN-Bedingung steht, zutrifft, wird alles bis zum zugehörenden ENDEWENN ausgeführt. Um das für sich und andere verständlich zu machen, macht man auch diese Einrückungen. Trifft das WENN nicht zu, springt das Makro bei der Ausführung sofort zum ENDEWENN, welches auch gleicher Höhe steht und führt die Zeile nach diesem ENDEWENN aus.
Mehrere solche WENN-Bedingungen, die selber wieder innerhalb einer WENN-Bedingung stehen, nennt man deshalb auch "verschachtelt". Steht auf dem Deckel einer Schachtel "Du darfst sie öffnen", wird sie geöffnet und der Inhalt angeschaut. Ist da wieder einer Schachtel drin, auf der steht "Du darfst sie nicht öffnen", wird sie geschlossen beiseite gelegt (selbst wenn da nochmals eine oder mehrere Schachteln drin sein sollten) und geschaut, was darunter liegt. Vielleicht wieder einer Schachtel, oder irgend eine "Überraschung" = Anweisung, die man dann an sich nimmt bzw. ausführt...
Das WENN ist der Deckel, das ENDEWENN der Boden der Schachtel. Das ganze kann geschichtet sein. Zuerst ein paar Anweisungen, dann eine Schachtel, wieder ein paar Anweisungen und dann der Schachtelboden. Die Anweisungen vor und nach der inneren Schachtel werden ausgeführt. Das was in der inneren Schachtel drin ist, nur, wenn auf dem Deckel steht "Du darfst sie öffnen".
Viele Grüsse
Bümpi
PS: In Homeputer für die FHZ hat übrigens Thomas mal festgestellt, dass die Verschachtelungstiefe maximal 19 verschachtelte WENN beträgt: http://homematic-forum.de/forum/viewtop ... f=2&t=1258
Ob diese Begrenzung immer noch und auch für Homeputer CL zutrifft, weiss ich nicht. Ist auch nicht von Bedeutung, weil eine derartige Konstruktion von einem Normalsterblichen eh nicht mehr nachvollzogen werden kann...
Ich glaube, du hast es richtig verstanden: Ein WENN und das ENDEWENN "auf gleicher Ebene" gehören immer zusammen. Falls das, was in einer WENN-Bedingung steht, zutrifft, wird alles bis zum zugehörenden ENDEWENN ausgeführt. Um das für sich und andere verständlich zu machen, macht man auch diese Einrückungen. Trifft das WENN nicht zu, springt das Makro bei der Ausführung sofort zum ENDEWENN, welches auch gleicher Höhe steht und führt die Zeile nach diesem ENDEWENN aus.
Mehrere solche WENN-Bedingungen, die selber wieder innerhalb einer WENN-Bedingung stehen, nennt man deshalb auch "verschachtelt". Steht auf dem Deckel einer Schachtel "Du darfst sie öffnen", wird sie geöffnet und der Inhalt angeschaut. Ist da wieder einer Schachtel drin, auf der steht "Du darfst sie nicht öffnen", wird sie geschlossen beiseite gelegt (selbst wenn da nochmals eine oder mehrere Schachteln drin sein sollten) und geschaut, was darunter liegt. Vielleicht wieder einer Schachtel, oder irgend eine "Überraschung" = Anweisung, die man dann an sich nimmt bzw. ausführt...
Das WENN ist der Deckel, das ENDEWENN der Boden der Schachtel. Das ganze kann geschichtet sein. Zuerst ein paar Anweisungen, dann eine Schachtel, wieder ein paar Anweisungen und dann der Schachtelboden. Die Anweisungen vor und nach der inneren Schachtel werden ausgeführt. Das was in der inneren Schachtel drin ist, nur, wenn auf dem Deckel steht "Du darfst sie öffnen".
Viele Grüsse
Bümpi
PS: In Homeputer für die FHZ hat übrigens Thomas mal festgestellt, dass die Verschachtelungstiefe maximal 19 verschachtelte WENN beträgt: http://homematic-forum.de/forum/viewtop ... f=2&t=1258
Ob diese Begrenzung immer noch und auch für Homeputer CL zutrifft, weiss ich nicht. Ist auch nicht von Bedeutung, weil eine derartige Konstruktion von einem Normalsterblichen eh nicht mehr nachvollzogen werden kann...