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.
    • 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