Ankündigung

Einklappen
Keine Ankündigung bisher.

Eines geht eines nicht, warum?

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

    [Codebeispiel] Eines geht eines nicht, warum?

    Servus,

    hab da mal ne Frage:
    Hab mal was nachprogramiert und mir gedacht, schreibst den Code mal anders. Funktioniert auch, aber nur jedes zweite mal. Warum?
    Steckdosen allgemein, werden jede Nacht ausgeschaltet, Steckdosen im Stadel nur jede zweite Nacht (und sind dann auch tagsüber aus).
    [highlight=epc]

    // Steckdosen allgemein Ausschalten
    if Schlafen then write ("Steckdosen allgemein-0/1/2", AUS) endif
    if !Schlafen then write ("Steckdosen allgemein-0/1/2", EIN) endif

    //Steckdosen im Stadel Standby unten schalten
    if Schlafen then write ("Steckdosen Werkstatt (Pumpe, Garagentor)-4/3/0", EIN) \\
    else write ("Steckdosen Werkstatt (Pumpe, Garagentor)-4/3/0", AUS) endif

    [/highlight]
    Gruß Bernhard

    #2
    Hi Bernhard,

    lies mal in diesem Thread hier mehr zum Validierungskonzept und überlege, ob eine Verknüpfung mit change() zum Erfolg führen könnte.

    Gruß,
    Bernd

    Kommentar


      #3
      Hallo Bernd,

      danke für den Hinweis auf den Thread! hab jetzt auch die meisten else Zweige entfernt...

      Gruß
      Bernhard

      Kommentar


        #4
        Zitat von bmx Beitrag anzeigen
        lies mal in diesem Thread hier mehr zum Validierungskonzept und überlege, ob eine Verknüpfung mit change() zum Erfolg führen könnte.
        Den Thread habe ich mal durchgelesen.

        NB.: Mir fällt auf, dass der Systemstart-Bereich nicht gekommen ist. Alle Probleme hiermit sind geblieben, nur der InitGA-Bereich "hilft" jetzt, auf die GA-Werte zu warten (ohne einstellbaren Timeout). Andere Themen, wie z.B. den gesamten Code so lange anzuhalten, bis die Zeit da ist, bis Variablen richtig vorbelegt sind (Arrays belegt sind, über Schleifen) etc. machen weiterhin Probleme. Aber gut, das ist ja nebensächlich und tut nichts zur Frage.

        Also zur Frage: Warum funktioniert der eine Code jedes Mal und der andere jedes 2. Mal?

        Jetzt glaube ich zu wissen, dass beim eibPC gilt:
        [highlight=epc]
        if var then blub else blubblub endif
        [/highlight]

        ist identisch zu

        [highlight=epc]
        if var then blub endif
        if !var then blubblub endif
        [/highlight]

        Dem ist doch immer noch so, oder???

        Falls dies also noch immer gilt, kann es nicht daran liegen, ob man ein else oder ein eigenes if mit '!' verwendet.

        Jetzt kann ich mir schon gut vorstellen, dass ich den Wald vor lauter Bäumen nicht sehe, aber auch der Hinweis mit dem change() bringt mich da nicht weiter. Das if wird ja sowieso nur bei einer Änderung bearbeitet.

        Also, wo liegt der Unterschied, außer, dass im Code steht, dass die Steckdosen in der Werkstatt nachts eingeschaltet werden und tagsüber aus (was wohl so nicht den Erwartungen entspricht)?
        BR
        Marc

        Kommentar


          #5
          Der Fehler mit Ein/Aus ist schon lange gefixt... *wie konnte das passieren...*
          Aber der Else Zweig wird trotzdem nicht bearbeitet.

          Gruß Bernhard

          Kommentar


            #6
            Moin,

            ich meine man könnte das ganze etwas abkürzen:
            [highlight=epc]
            // Steckdosen allgemein Ausschalten
            if change(Schlafen) then write ("Steckdosen allgemein-0/1/2", !Schlafen) endif

            //Steckdosen im Stadel Standby unten schalten
            if change(Schlafen) then write ("Steckdosen Werkstatt (Pumpe, Garagentor)-4/3/0", Schlafen) endif
            [/highlight]

            So wird bei Änderung der Variable Schlafen ein write Befehl ausgelöst.
            Du mußt nun nur noch schauen, ob das Verhalten bei systemstart() von Dir noch berücksichtigt werden muß.

            Gruß,
            Bernd

            Kommentar


              #7
              Zitat von bmx Beitrag anzeigen
              ich meine man könnte das ganze etwas abkürzen:
              Nun gut, eine Optimierung ist eine Sache, ein falsches Verhalten eine andere.

              Sollte das else nicht funktionieren, sollte man der Sache nachgehen.
              BR
              Marc

              Kommentar

              Lädt...
              X