Ankündigung
Einklappen
Keine Ankündigung bisher.
In der Tiefe: Validierungskonzept
Einklappen
X
-
Sind das die Originalen oder eher günstige Importe aus China?Zitat von bmx Beitrag anzeigenUnd ich biete hier noch passende Siemens-Lufthaken an, im Dutzend dann etwas billiger ...BR
Marc
Kommentar
-
Daraus schließe ich: an anderer Stelle schon deutlich wärmer...Zitat von enertegus Beitrag anzeigenGaaanz kalt, an dieser Stelle.....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!
Kommentar
-
Wer entsorgt meinen Eimer Spannungsabfall?Zitat von bmx Beitrag anzeigenUnd ich biete hier noch passende Siemens-Lufthaken an, im Dutzend dann etwas billiger ...
Kommentar
-
Hier mal wieder etwas zum Thema Valdierungskonzept für Fortgeschrittene. Da ergibt sich eine Erweiterung mit den Makro-Funktionen.
Theoretisch können wir das auch noch ändern, und grundsätzlich den erwähnten globalen Kontext lokalisieren - das wäre dann im Text, dass :return nicht gleichzeitig auch die Validierung festlegt, wie von mir so gedacht. Ich finde es aber so weitaus flexibler - vielleicht zu Kosten der Einfachheit (?). Ich stelle das mal vorsichtig zur Diskussion.
Angehängte Dateienoffizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
Enertex Produkte kaufen
Kommentar
-
Mir ist unklar was das ganze mit dem Validierungschema zu tun hat.
So wie ich das verstehe wird eine Textersetzung durchgeführt:
- alles im Return ersetzt den 'Funktionsaufruf' im Code
- alles vor dem Return wird in die Hauptebene gesetzt
Wieso muss ich mir da Gedanken über ein vererbtes Validierungschema machen?
Wie würde denn eine Variante mit lokalen Variablen aussehen?BR
Marc
Kommentar
-
[QUOTE=saft6luck;137222]
So wie ich das verstehe wird eine Textersetzung durchgeführt:
- alles im Return ersetzt den 'Funktionsaufruf' im Code
- alles vor dem Return wird in die Hauptebene gesetzt
[QUOTE]
Das ist so absolut richitg. Allerdings kann denkt man da leicht in ein Fahrwasser kommen, dass man ein paar Seiteneffekte vergisst.Lokale Variablen sind quasi "verdeckte" globale Variablen mit einer speziellen Namensgebung. Diese wird vom Eibparser selbst generiert und zwar so, dass man diese nicht selbst definieren kann.Wie würde denn eine Variante mit lokalen Variablen aussehen?
Ansonsten verhalten diese sich exakt gleich.offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
Enertex Produkte kaufen
Kommentar
-
Ok, so hatte ich mir das vorgestellt. Dann könnte man ja dem Makro einen Parameter für die lokalen Variablen mitgeben, der deren Namen ergänzt -> kann man leicht selber machen.
Finde ich zwar umständlich und ein Kommando im Makro würde mir besser gefallen, à la ':local ...' und ':global', aber wenn nur entweder oder geht würde ich für global plädieren mit einer Anleitung für lokale Variablen im Text.BR
Marc
Kommentar
-
So war das ja mal gedacht, doch der Anwenderkreis hier wollte ja eben lokale Definitionen.Zitat von saft6luck Beitrag anzeigenOk, so hatte ich mir das vorgestellt. Dann könnte man ja dem Makro einen Parameter für die lokalen Variablen mitgeben, der deren Namen ergänzt -> kann man leicht selber machen
Das versteh ich nicht so ganz:Finde ich zwar umständlich und ein Kommando im Makro würde mir besser gefallen, à la ':local ...' und ':global', aber wenn nur entweder oder geht würde ich für global plädieren mit einer Anleitung für lokale Variablen im Text.
Lokale Variablen werden gesondert definiert, alle anderen sind global, oder was meinst Du da?offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
Enertex Produkte kaufen
Kommentar
-
Ja, etwa so:Zitat von enertegus Beitrag anzeigenLokale Variablen werden gesondert definiert, alle anderen sind global, oder was meinst Du da?
[highlight=epc]
:begin Akt(Aktor,Now)
:global
InitGA(Aktor)
Urlaub=AUS
:local
Variable=0
:return {
Variable=Variable+1;
if Now and !Urlaub then write(Aktor,Variable) endif
}
:end
[/highlight]
:global ist generell optional, ohne sind variablen auch global
:lokal ist optional. Variablen, die unter :local deklariert werden, werden vom Compiler wie von dir vorgeschlagen bei jeder Ersetzung eibPC-intern mit einer einmaligen Kennung ergänzt und sind somit programmtechnisch lokal.
Ob beide Schlüsselwörter nur einmal im Makro stehen dürfen ist dann von den Möglichkeiten des Parsers abhängig (vermeidet evtl. aber auch Fehler).
Übrigens: Warum brauch denn :return einen Block, während unter :begin keiner notwendig ist?BR
Marc
Kommentar
-
Hallo Michael,
kannst du mir noch schnell sagen, warum folgendes geht:
[highlight=epc]
// Sonnenuntergang
Rollo_Sonnenuntergang_verzoegerung = 20u08
Rollo_Sonnenuntergang_h = sunsethour()
Rollo_Sonnenuntergang_m = sunsetminute() + Rollo_Sonnenuntergang_verzoegerung; /* -> Minuten: 20 <= m <= 79 */
if change( Rollo_Sonnenuntergang_m ) then {
if ( Rollo_Sonnenuntergang_m > 59u08 ) then {
Rollo_Sonnenuntergang_m = Rollo_Sonnenuntergang_m - 60u08;
Rollo_Sonnenuntergang_h = Rollo_Sonnenuntergang_h + 1u08;
} endif
} endif
[/highlight]
folgendes aber nicht(?):
[highlight=epc]
// Sonnenaufgang
Rollo_Sonnenaufgang_frueher = 15u08
Rollo_Sonnenaufgang_h = sunrisehour()
Rollo_Sonnenaufgang_m = sunriseminute(); /* -> Minuten: 0 <= m <= 59 */
if change( Rollo_Sonnenaufgang_m ) then {
if ( Rollo_Sonnenaufgang_m < Rollo_Sonnenaufgang_frueher ) then {
Rollo_Sonnenaufgang_m = Rollo_Sonnenaufgang_m + 60u08;
Rollo_Sonnenaufgang_h = Rollo_Sonnenaufgang_h - 1u08;
} endif;
Rollo_Sonnenaufgang_m = Rollo_Sonnenaufgang_m - Rollo_Sonnenaufgang_frueher
} endif
[/highlight]
Ich dachte das sollte gefixt worden sein?!BR
Marc
Kommentar
-
Das zweite generiert u.U. (z.b Minuten auf 47 und Offset 50) eine Art Endlosschleife, da nach jeder Änderung "if change" immer wieder gültig ist.Zitat von saft6luck Beitrag anzeigenHallo Michael,
kannst du mir noch schnell sagen, warum folgendes geht:
Was meinst Du sei hier nicht in Ordung? Auf die Schnelle (es ist ja schon spät [hoffentlich sieht das der Makki nicht, 23:00 und spät, tsss]) seh ich da nix Ungewöhnliches.Ich dachte das sollte gefixt worden sein?!offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
Enertex Produkte kaufen
Kommentar




Kommentar