Ankündigung
Einklappen
Keine Ankündigung bisher.
In der Tiefe: Validierungskonzept
Einklappen
X
-
Zitat von bmx Beitrag anzeigenUnd ich biete hier noch passende Siemens-Lufthaken an, im Dutzend dann etwas billiger ...BR
Marc
Kommentar
-
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
-
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.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
-
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
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
-
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
-
Zitat von saft6luck Beitrag anzeigenHallo Michael,
kannst du mir noch schnell sagen, warum folgendes geht:
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