Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Blockly erkennt Zahl nicht bei einer OR Prüfung

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Blockly erkennt Zahl nicht bei einer OR Prüfung

    This topic has been deleted. Only users with topic management privileges can see it.
    • G
      gutgut30 last edited by

      Hi zusammen,

      ich möchte gerne Montag, Mittwoch und Freitag etwas ausführen. Dazu nutze ich das Datumsobjekt als Wochentag als Zahl.

      Wenn ich den Tag einzeln prüfe klappt die Prüfung, wenn ich es jedoch in einem ODER zusammenbaue schlägt die Prüfung fehl. Einen "Wenn Wert IN..." Block habe ich nicht gefunden.

      Der Screenshot ist natürlich nicht mein ganzes Script, zeigt aber mein Problem dabei.
      5f37e8f4-5294-4ebc-8e80-fe591edf469c-image.png

      Zum einen die Frage: Fehler? Oder verschachtelt das ODER hier irgendwie anders als ich es erwarte?

      Und wie würde ich das ganze anders lösen? Natürlich kann ich drei "Falls Blöcke" bauen, das erscheint mit jedoch etwas umständlich.

      Danke & Grüße

      haus-automatisierung 1 Reply Last reply Reply Quote 0
      • haus-automatisierung
        haus-automatisierung Developer Most Active @gutgut30 last edited by haus-automatisierung

        @gutgut30 sagte in Blockly erkennt Zahl nicht bei einer OR Prüfung:

        Oder verschachtelt das ODER hier irgendwie anders als ich es erwarte?

        Du machst 1 || 3 || 5 und vergleichst das Ergebnis davon mit dem aktuellen Wert. Bei JavaScript käme da immer 1 raus.

        So funktioniert ein "oder" nicht. Du brauchst 3 separate Prüfungen auf ist die Werte. So:

        Screenshot 2025-02-19 at 14.17.03.png

        Oder legst eine Liste mit den gültigen Werten an und schaust ob der aktuelle Wert in der Liste vorkommt.

        Screenshot 2025-02-19 at 14.15.58.png

        <xml xmlns="https://developers.google.com/blockly/xml">
          <block type="debug" id="/0h^^V4gBh-DuB%E@LMH" x="-63" y="138">
            <field name="Severity">info</field>
            <value name="TEXT">
              <shadow type="text" id="XW0HcXt|LXk=S]zF2vRQ">
                <field name="TEXT">test</field>
              </shadow>
              <block type="logic_compare" id="7HQ:cIT4,R^wF:,E_9:S">
                <field name="OP">GT</field>
                <value name="A">
                  <block type="lists_indexOf" id="5p=$(h7^#xv_]9F%Uboq" inline="false">
                    <field name="END">FIRST</field>
                    <value name="VALUE">
                      <block type="lists_create_with" id="lh.8xenMM16tdkBIfm0=">
                        <mutation items="3"></mutation>
                        <value name="ADD0">
                          <block type="math_number" id="ogaJ./js~cS%T_k8-WYt">
                            <field name="NUM">1</field>
                          </block>
                        </value>
                        <value name="ADD1">
                          <block type="math_number" id="oi1k|XfS2jd9-Q8FaDdF">
                            <field name="NUM">3</field>
                          </block>
                        </value>
                        <value name="ADD2">
                          <block type="math_number" id="5Ak:V2=4U=e/lc7cgBVv">
                            <field name="NUM">5</field>
                          </block>
                        </value>
                      </block>
                    </value>
                    <value name="FIND">
                      <block type="time_get" id="ios#i^N@+Nf}}zw@CPIm">
                        <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation>
                        <field name="OPTION">wd</field>
                      </block>
                    </value>
                  </block>
                </value>
                <value name="B">
                  <block type="math_number" id="HM?8g%7-_mZ2cmj}1%0~">
                    <field name="NUM">0</field>
                  </block>
                </value>
              </block>
            </value>
          </block>
        </xml>
        
        Codierknecht Homoran G 3 Replies Last reply Reply Quote 3
        • Codierknecht
          Codierknecht Developer Most Active @haus-automatisierung last edited by

          @haus-automatisierung sagte in Blockly erkennt Zahl nicht bei einer OR Prüfung:

          Bei JavaScript käme da immer 1 raus

          ... oder exakter: true

          @gutgut30
          Einführung in die bool'sche Algebra - Teil 1:

          Das "oder" ist hier ein logischer (bool'scher) Operator. Dieser Operator liefert true, wenn einer der Teilausdrücke true ist. Deine Teilausdrücke 1, 3 und 5 sind aber alle nicht false (alle Ziffern != 0 werden als true ausgewertet). Darum kommt da dann als Endergebnis wieder true raus.

          haus-automatisierung 1 Reply Last reply Reply Quote 1
          • haus-automatisierung
            haus-automatisierung Developer Most Active @Codierknecht last edited by haus-automatisierung

            @codierknecht sagte in Blockly erkennt Zahl nicht bei einer OR Prüfung:

            Bei JavaScript käme da immer 1 raus

            ... oder exakter: true

            Nein, numerisch 1.

            Ein false || 3 ist liefert z.B. auch 3. Das nutzen viele für Standard-Parameter.

            Codierknecht 1 Reply Last reply Reply Quote 1
            • Homoran
              Homoran Global Moderator Administrators @haus-automatisierung last edited by

              @haus-automatisierung sagte in Blockly erkennt Zahl nicht bei einer OR Prüfung:

              So funktioniert ein "oder" nicht.

              Das liegt aber an der schlampigen Verwendung bool'scher Begtiffe in der Umgangssprache.
              Ebenso wie das und/oder bei 'Montag und Mittwoch', was korrekterweise einem falls Mo oder Mi entspricht

              1 Reply Last reply Reply Quote 0
              • Codierknecht
                Codierknecht Developer Most Active @haus-automatisierung last edited by

                @haus-automatisierung sagte in Blockly erkennt Zahl nicht bei einer OR Prüfung:

                Nein, numerisch 1.

                Du hast tatsächlich Recht.
                Ich bleibe dabei: Komische Sprache, bei der ein bool'scher Ausdruck nicht ausschließlich true oder false ist.
                Daran, dass das im Speicher als 0 oder 1 abgebildet wird, stören sich andere Sprachen ja auch nicht.

                0b1308a3-a570-45cb-9a1c-b037918755a4-image.png

                haus-automatisierung 1 Reply Last reply Reply Quote 0
                • haus-automatisierung
                  haus-automatisierung Developer Most Active @Codierknecht last edited by haus-automatisierung

                  @codierknecht sagte in Blockly erkennt Zahl nicht bei einer OR Prüfung:

                  Ich bleibe dabei: Komische Sprache, bei der ein bool'scher Ausdruck nicht ausschließlich true oder false ist.

                  Das ist ein logisches oder und nicht nur ein boolscher Operator. Meistens verwendet man den natürlich mit boolean Werten. Aber ist eben noch etwas flexibler. Ich bevorzuge für solche Dinge auch den Nullish coalescing operator ??. Der verhält sich aber etwas anders.

                  https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_OR#using_or

                  However, the || operator actually returns the value of one of the specified operands, so if this operator is used with non-Boolean values, it will return a non-Boolean value.

                  Codierknecht 1 Reply Last reply Reply Quote 0
                  • G
                    gutgut30 @haus-automatisierung last edited by

                    @haus-automatisierung
                    Der Hinweis auf "was würde JavaScript machen" hat mir den Gedankenfehler auch klar aufgezeigt.

                    Ganz vielen Dank.

                    1 Reply Last reply Reply Quote 0
                    • Codierknecht
                      Codierknecht Developer Most Active @haus-automatisierung last edited by

                      @haus-automatisierung
                      ... macht mir die Sprache nicht wirklich weniger suspekt 🤔

                      haus-automatisierung 1 Reply Last reply Reply Quote 0
                      • haus-automatisierung
                        haus-automatisierung Developer Most Active @Codierknecht last edited by

                        @codierknecht Ich fänd' es deutlich suspekter, wenn bei 1 || 3 ein true das Ergebnis wäre. Machen viele Sprache ja genauso. PHP, Python usw.

                        Codierknecht 1 Reply Last reply Reply Quote 0
                        • Codierknecht
                          Codierknecht Developer Most Active @haus-automatisierung last edited by

                          @haus-automatisierung

                          Eigentlich hast Du ja Recht.

                          Sowas wie 1 || 3 funktioniert eh nur wegen der fehlenden Typsicherheit.
                          In Delphi z.B. meckert sofort mein Compiler, wenn ich versuche nicht-bool'sche Typen mit 'nem or oder and zu behandeln. Da müsste ich die Operanden erst Type-casten.

                          Lass gut sein. Ich wollte ja nicht @gutgut30's Thread kapern.

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          719
                          Online

                          31.9k
                          Users

                          80.2k
                          Topics

                          1.3m
                          Posts

                          4
                          11
                          347
                          Loading More Posts
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes
                          Reply
                          • Reply as topic
                          Log in to reply
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                          The ioBroker Community 2014-2023
                          logo