Ankündigung

Einklappen
Keine Ankündigung bisher.

In der Tiefe: Validierungskonzept

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • saft6luck
    antwortet
    Zitat von enertegus Beitrag anzeigen
    Hä, ich dachte, es geht Dir um die Initialisierung?
    Ja, da ist eine Abfrage drinnen und wenn du die Konstante nicht größer als die Minuten des Sonnenaufganges wählst, wird es auch keine Änderung geben.
    Du solltest dir dann auch noch den tatsächlichen Sonnenaufgang ausgeben.

    [highlight=epc]
    Rollo_Sonnenaufgang_frueher = 30s08
    Rollo_Sonnenaufgang_h = sunrisehour()
    Rollo_Sonnenaufgang_m_s = convert( sunriseminute(), 0s08) - Rollo_Sonnenaufgang_frueher; /* -> Minuten: -15 <= m <= 44 */

    if change( Rollo_Sonnenaufgang_m_s ) then {
    if ( Rollo_Sonnenaufgang_m_s < 0s08 ) then {
    Rollo_Sonnenaufgang_m_s = Rollo_Sonnenaufgang_m_s + 60s08;
    Rollo_Sonnenaufgang_h = sunrisehour() - 1u08;
    write('0/0/1'u08,10);
    } endif
    } endif

    Rollo_Sonnenaufgang_m = convert( Rollo_Sonnenaufgang_m_s, 0u08 )
    [/highlight]

    Einen Kommentar schreiben:


  • enertegus
    antwortet
    Zitat von Tessi Beitrag anzeigen
    Klar, aber Code soll doch in erster Linie möglichst optimal das Problem lösen.
    Mir ging es eher um Grundsätzliches, weniger um die Realisierung an sich.

    Einen Kommentar schreiben:


  • Tessi
    antwortet
    Zitat von saft6luck Beitrag anzeigen
    Ja, ungeachtet der Methode, die Helligkeit richtig abzuschätzen, wird es dynamisch geschehen.
    Irgendwie verstehe ich nicht, was mir das sagen soll.

    Zitat von saft6luck Beitrag anzeigen
    Debugging mit der Konstanten ist da aber einfacher.
    Klar, aber Code soll doch in erster Linie möglichst optimal das Problem lösen. Und wenn Du einfach elevation() nutzt, dann mußt Du gar nicht debuggen, denn wenn die nicht tut was sie soll kann das eh nur Enertex ändern...

    Einen Kommentar schreiben:


  • enertegus
    antwortet
    Zitat von saft6luck Beitrag anzeigen
    Du bist ja ein toller Tester!
    Klar
    Die Konstante muss so gewählt werden, dass die Abfrage auch erfüllt wird (heute z.B. 30)-> musst also 2 Tests machen.
    Hä, ich dachte, es geht Dir um die Initialisierung?

    Einen Kommentar schreiben:


  • saft6luck
    antwortet
    Zitat von enertegus Beitrag anzeigen
    Hab ich gemacht, und das Ergebnis scheint mir richtig.
    Du bist ja ein toller Tester!
    Die Konstante muss so gewählt werden, dass die Abfrage auch erfüllt wird (heute z.B. 30)-> musst also 2 Tests machen.

    Einen Kommentar schreiben:


  • saft6luck
    antwortet
    Zitat von Tessi Beitrag anzeigen
    Aber wenn hier Rollos vor Sonnenaufgang geöffnet werden sollen, dann würde ich dafür nicht eine bestimmte Zeit vor Sonnenaufgang wählen, sondern einen bestimmten Winkel unter dem Horizont (so 3°-4° dürften im Mittel 20min dauern). Das entspricht auch eher einer bestimmten Helligkeit als eine fixe Zeitspanne vor Sonnenaufgang, und ist deutlich einfacher zu codieren. Gilt analog auch für Xmin nach Sonnenuntergang...
    Ja, ungeachtet der Methode, die Helligkeit richtig abzuschätzen, wird es dynamisch geschehen. Debugging mit der Konstanten ist da aber einfacher.

    Einen Kommentar schreiben:


  • enertegus
    antwortet
    Zitat von Tessi Beitrag anzeigen
    sondern einen bestimmten Winkel unter dem Horizont (so 3°-4° dürften im Mittel 20min dauern).
    Das geht mit azimuth und elavation.

    Einen Kommentar schreiben:


  • Tessi
    antwortet
    Also als Studie über die Tücken im Verständnis des ach so einfachen und logische Validierungsschemas finde ich dieses Beispiel hier ja ganz gut. Aber wenn hier Rollos vor Sonnenaufgang geöffnet werden sollen, dann würde ich dafür nicht eine bestimmte Zeit vor Sonnenaufgang wählen, sondern einen bestimmten Winkel unter dem Horizont (so 3°-4° dürften im Mittel 20min dauern). Das entspricht auch eher einer bestimmten Helligkeit als eine fixe Zeitspanne vor Sonnenaufgang, und ist deutlich einfacher zu codieren. Gilt analog auch für Xmin nach Sonnenuntergang...
    Rechnen im hh:mm:ss-Format ist nun einmal häßlich, wenn es dafür keine Funktionen gibt, und auf eine lineare Zeitdarstellung, wie sie die Systemuhr von Linux verwendet, hat der User ja leider keinen Zugriff!

    Einen Kommentar schreiben:


  • enertegus
    antwortet
    Zitat von saft6luck Beitrag anzeigen
    Bei mir hier schon:
    Rollo_Sonnenaufgang_m im Debugger anschauen ...
    Da wir dann ja soweit sind, evtl. kannst du dann meine anfängliche Frage ja beantworten (siehe Posting #194)?
    Hab ich gemacht, und das Ergebnis scheint mir richtig.
    Ich habe auch noch eine Ausgabe gemacht, um zu sehen, ob change triggert: es wird nicht beim Systemstart getriggert.
    [highlight=epc]
    Rollo_Sonnenaufgang_frueher = 15s08
    Rollo_Sonnenaufgang_h = sunrisehour()
    Rollo_Sonnenaufgang_m_s = convert( sunriseminute(), 0s08) - Rollo_Sonnenaufgang_frueher; /* -> Minuten: -15 <= m <= 44 */

    if change( Rollo_Sonnenaufgang_m_s ) then {
    if ( Rollo_Sonnenaufgang_m_s < 0s08 ) then {
    Rollo_Sonnenaufgang_m_s = Rollo_Sonnenaufgang_m_s + 60s08;
    Rollo_Sonnenaufgang_h = sunrisehour() - 1u08;
    write('0/0/1'u08,10);
    } endif
    } endif

    Rollo_Sonnenaufgang_m = convert( Rollo_Sonnenaufgang_m_s, 0u08 )
    [/highlight]
    Angehängte Dateien

    Einen Kommentar schreiben:


  • saft6luck
    antwortet
    Bei mir hier schon:
    [highlight=epc]
    // Sonnenaufgang
    Rollo_Sonnenaufgang_frueher = 15s08
    Rollo_Sonnenaufgang_h = sunrisehour()
    Rollo_Sonnenaufgang_m_s = convert( sunriseminute(), 0s08) - Rollo_Sonnenaufgang_frueher; /* -> Minuten: -15 <= m <= 44 */

    if change( Rollo_Sonnenaufgang_m_s ) then {
    if ( Rollo_Sonnenaufgang_m_s < 0s08 ) then {
    Rollo_Sonnenaufgang_m_s = Rollo_Sonnenaufgang_m_s + 60s08;
    Rollo_Sonnenaufgang_h = sunrisehour() - 1u08;
    } endif
    } endif

    Rollo_Sonnenaufgang_m = convert( Rollo_Sonnenaufgang_m_s, 0u08 )
    [/highlight]
    Rollo_Sonnenaufgang_m im Debugger anschauen ...

    Da wir dann ja soweit sind, evtl. kannst du dann meine anfängliche Frage ja beantworten (siehe Posting #194)?

    Einen Kommentar schreiben:


  • enertegus
    antwortet
    Zitat von saft6luck Beitrag anzeigen
    Ganz konkrete Frage: Warum wird hier der change direkt nach Systemstart ausgelöst?
    Hm, bei mir hier nicht:
    [highlight=epc]
    Rollo_Sonnenaufgang_frueher=0s08
    Rollo_Sonnenaufgang_m = convert(sunriseminute(),0s08)+Rollo_Sonnenaufgang_ frueher
    dummy='1/2/3'c14
    if change(Rollo_Sonnenaufgang_m) then {
    write('1/2/3'c14,$change$c14)
    } endif
    [/highlight]

    Einen Kommentar schreiben:


  • saft6luck
    antwortet
    Zitat von enertegus Beitrag anzeigen
    Wenn nach der Initialisierung das Argument von change() sich ändert - durch eine Programmierung oder durch Zugriff auf den Debugger.
    War nicht die Antwort auf meine Frage.

    Ich versuch es erneut mit dem Beispiel:
    [highlight=epc]
    Rollo_Sonnenaufgang_m_s = convert( sunriseminute(), 0s08) - Rollo_Sonnenaufgang_frueher
    if change( Rollo_Sonnenaufgang_m_s ) then {
    ...
    [/highlight]
    Ganz konkrete Frage: Warum wird hier der change direkt nach Systemstart ausgelöst?

    Einen Kommentar schreiben:


  • enertegus
    antwortet
    Zitat von saft6luck Beitrag anzeigen
    Was ist: "Jede Änderung"? Kannst du das bitte konkretisieren?
    Wenn nach der Initialisierung das Argument von change() sich ändert - durch eine Programmierung oder durch Zugriff auf den Debugger.
    Bsp: Wenn ich sunriseminute() in eine Variable schreibe, wann wird dann der change ausgelöst? Warum gibt es einen Unterschied, wenn ich eine Konstante addiere?
    sunriseminute() aktualisiert sich mindestens 1x täglich, um 00:00 Uhr, damit ändert sich der Ausdruck. Wenn die "Konstante" (=Zahl) sich ändert (Veränderung per Slider etc.) dann natürlich auch.

    Einen Kommentar schreiben:


  • saft6luck
    antwortet
    Zitat von enertegus Beitrag anzeigen
    Die Initialsierung wird nicht als change() behandelt, jede Änderung nach der Initalisierung triggert change
    Was ist: "Jede Änderung"? Kannst du das bitte konkretisieren?

    Bsp: Wenn ich sunriseminute() in eine Variable schreibe, wann wird dann der change ausgelöst? Warum gibt es einen Unterschied, wenn ich eine Konstante addiere?

    Einen Kommentar schreiben:


  • enertegus
    antwortet
    Zitat von saft6luck Beitrag anzeigen
    Tja, und wann sieht change dann den change?.
    Die Initialsierung wird nicht als change() behandelt, jede Änderung nach der Initalisierung triggert change

    Einen Kommentar schreiben:

Lädt...
X