Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. #define in Blockly ? [geht nicht]

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    523

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.7k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.6k

#define in Blockly ? [geht nicht]

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
14 Beiträge 7 Kommentatoren 672 Aufrufe 7 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • MartinSUM MartinSU

    Hallo,
    früher habe ich viel in C und C++ programmiert.
    Da gab es "#define". So konnte ich einen Wert global definieren und er wurde im ganzen Listing eingesetzt, z.B.
    #define Max_Temp 50
    Und wenn man den Wert im define ändert, wird er im nächsten Compilerdurchlauf an allen vorkommenden Stellen ersetzt.
    Natürlich kann man die "50" auch z.B. zehnmal im Listing eintragen. Aber wenn man den Wert einmal ändert und vergisst eine Stelle, .... viel Spaß beim Fehlersuchen.
    Oder man erzeugt eine lokale Variable mit "50" die dann im Listing entsprechend verwendet wird. Aber das ist im Speicher ein Datenbereich, der jedes Mal gelesen werden muss, und sie könnte fälschlicherweise mit einem falschen Wert überschrieben werden, usw.
    Könnte man in Blockly nicht links bei "Variable" auch einen Eintrag "Define" erstellen.
    Dadrin könnte es dann geben z.B.:

    • Define erstellen ...
    • setze "DefineName" auf
    • Gibt den Werte des Defines zurück
      Weitere Funktionen wären nicht möglich.
      Übernommen werden die "defines" z.B. bei "Script ausführen" oder "Neustart".

    Liebe ioBroker-Leitung, ich weiß leider nicht wie so etwas hier realisiert werden kann, oder wie die Prozesse/Entscheidungen in der ioBroker-Leitung ablaufen, oder ob es eine solche Idee schon mal gab (habe nichts gefunden), oder oder oder...
    Ich fände es schön, wenn solche "defines" realisiert werden könnten.

    haus-automatisierungH Online
    haus-automatisierungH Online
    haus-automatisierung
    Developer Most Active
    schrieb am zuletzt editiert von
    #2

    @martinsu Das #define (als Makro) wird bei C ja vom Präprozessor überall ersetzt. So etwas gibt es in JavaScript nicht. Daher kann das auch niemand anbieten.

    In Blockly bleiben Dir also nur die Variablen. In JavaScript oder TypeScript würde man eine Konstante anlegen.

    const maxTemp = 50;
    

    🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
    🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
    📚 Meine inoffizielle ioBroker Dokumentation

    CodierknechtC 1 Antwort Letzte Antwort
    1
    • black.falcon87B Offline
      black.falcon87B Offline
      black.falcon87
      schrieb am zuletzt editiert von
      #3

      Ich antworte mal laienhaft, da ich kein Entwickler / Programmierer bin, aber innerhalb von den Objekten in ioBroker gibt es ja den Bereich userdata in welchem jeder Benutzer seine eigenen Objekte anlegen kann.
      Mach dir doch dort einfach einen neuen Ordner namens "Defines" (oder wie auch immer du ihn nennen magst) und dort erzeugst du Datenpunkte. Jeder Datenpunkt ist dann eine Variable und die kannst du ihn verschiedenen Skripten verwenden.
      Änderst du den Wert des Datenpunktes unterhalb vom Ordner userdata, ändert sich der Wert ja auch in allen Skripten die mit diesem Wert arbeiten. Oder denke ich da jetzt zu einfach?

      MartinPM 1 Antwort Letzte Antwort
      0
      • black.falcon87B black.falcon87

        Ich antworte mal laienhaft, da ich kein Entwickler / Programmierer bin, aber innerhalb von den Objekten in ioBroker gibt es ja den Bereich userdata in welchem jeder Benutzer seine eigenen Objekte anlegen kann.
        Mach dir doch dort einfach einen neuen Ordner namens "Defines" (oder wie auch immer du ihn nennen magst) und dort erzeugst du Datenpunkte. Jeder Datenpunkt ist dann eine Variable und die kannst du ihn verschiedenen Skripten verwenden.
        Änderst du den Wert des Datenpunktes unterhalb vom Ordner userdata, ändert sich der Wert ja auch in allen Skripten die mit diesem Wert arbeiten. Oder denke ich da jetzt zu einfach?

        MartinPM Online
        MartinPM Online
        MartinP
        schrieb am zuletzt editiert von
        #4

        @black-falcon87

        1. das könnte man für scriptübergreifende "defines" vielleicht überlegen, mit skript-lokalen defines wird es unübersichtlich
        2. der Zugriff auf die Daten aus dem Userdata Tree wird sicherlich nicht ohne Aufwand erfolgen, wird ein wenig (wenn auch kaum merklich) mehr Rechenzeit kosten, als es einfach so zu machen, wie es @haus-automatisierung vorgeschlagen hat.

        Intel(R) Celeron(R) CPU N3000 @ 1.04GHz 8G RAM 480G SSD
        Virtualization : unprivileged lxc container (debian 12 on Proxmox 8.4.14)
        Linux pve 6.8.12-16-pve
        6 GByte RAM für den Container
        Fritzbox 6591 FW 8.03 (Vodafone Leih-Box)
        Remote-Access über Wireguard der Fritzbox

        1 Antwort Letzte Antwort
        0
        • haus-automatisierungH haus-automatisierung

          @martinsu Das #define (als Makro) wird bei C ja vom Präprozessor überall ersetzt. So etwas gibt es in JavaScript nicht. Daher kann das auch niemand anbieten.

          In Blockly bleiben Dir also nur die Variablen. In JavaScript oder TypeScript würde man eine Konstante anlegen.

          const maxTemp = 50;
          
          CodierknechtC Offline
          CodierknechtC Offline
          Codierknecht
          Developer Most Active
          schrieb am zuletzt editiert von
          #5

          @haus-automatisierung sagte in #define in Blockly ? [geht nicht]:

          In Blockly bleiben Dir also nur die Variablen. In JavaScript oder TypeScript würde man eine Konstante anlegen.

          Wäre ein Block "Konstante" nicht etwas für ein künftiges Update?

          @MartinSU
          Wie @haus-automatisierung schon schreibt, gibt es in der JS-Welt keinen Präprozessor, demnach auch keine Makros und somit kein #define.
          In der ganz großen Mehrheit der Sprachen macht man sowas mit Konstanten. Die erfüllen genau den von Dir gewünschten Zweck.

          OT:
          Es gab in der "DOS-International" mal den "Kilo-Mark-Wettbewerb". Um 1.024 DM gewinnen zu können durfte das eingereichte Programm (das Listing) max. 1.024 Byte groß sein.
          Da hat mal jemand ein komplexes Menüsystem programmiert (in ANSI-C). Damit das Listing die Größe nicht überschritt, hat der Kerl den Präprozessor komplett vergewaltigt.
          Das wimmelte nur so vor Konstrukten wie dem hier:

          #define f10 for(i=0;i<10;i++) {
          #define f20 for(i=0;i<20;i++) {
          #define a if (i > 0)
          // und noch jede Menge weitere
          

          Fast alles was mehr als 1x im Code vorkam, wurde durch Makros definiert.
          Im Code wurde dann nur noch f10, f20, a usw. aufgerufen.
          Konnte in der Form natürlich keine Sau lesen.

          "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

          Proxmox 9.1.1 LXC|8 GB|Core i7-6700
          HmIP|ZigBee|Tasmota|Unifi
          Zabbix Certified Specialist
          Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

          MartinPM 1 Antwort Letzte Antwort
          0
          • MartinSUM MartinSU

            Hallo,
            früher habe ich viel in C und C++ programmiert.
            Da gab es "#define". So konnte ich einen Wert global definieren und er wurde im ganzen Listing eingesetzt, z.B.
            #define Max_Temp 50
            Und wenn man den Wert im define ändert, wird er im nächsten Compilerdurchlauf an allen vorkommenden Stellen ersetzt.
            Natürlich kann man die "50" auch z.B. zehnmal im Listing eintragen. Aber wenn man den Wert einmal ändert und vergisst eine Stelle, .... viel Spaß beim Fehlersuchen.
            Oder man erzeugt eine lokale Variable mit "50" die dann im Listing entsprechend verwendet wird. Aber das ist im Speicher ein Datenbereich, der jedes Mal gelesen werden muss, und sie könnte fälschlicherweise mit einem falschen Wert überschrieben werden, usw.
            Könnte man in Blockly nicht links bei "Variable" auch einen Eintrag "Define" erstellen.
            Dadrin könnte es dann geben z.B.:

            • Define erstellen ...
            • setze "DefineName" auf
            • Gibt den Werte des Defines zurück
              Weitere Funktionen wären nicht möglich.
              Übernommen werden die "defines" z.B. bei "Script ausführen" oder "Neustart".

            Liebe ioBroker-Leitung, ich weiß leider nicht wie so etwas hier realisiert werden kann, oder wie die Prozesse/Entscheidungen in der ioBroker-Leitung ablaufen, oder ob es eine solche Idee schon mal gab (habe nichts gefunden), oder oder oder...
            Ich fände es schön, wenn solche "defines" realisiert werden könnten.

            BananaJoeB Offline
            BananaJoeB Offline
            BananaJoe
            Most Active
            schrieb am zuletzt editiert von
            #6

            @martinsu mal einen Schritt zurück: in ioBroker würde ich für so etwas einen eigenen Datenpunkt unterhalb von 0_userdata.0 einsetzen. Da packe ich Parameter für Skripte hin um diese ggf. z.B. über eine VIS, Zeitpläne oder Sensoren ändern zu können.
            Das Skript holt sich am Anfang und bei Änderung den Wert, alternativ bei Verwendung innerhalb der Funktionen.
            Damit ich nicht 100 mal den Datenpunkt angeben muss definiere ich den einmal in einer Variablen und nutze diese dann im Rest des Skriptes:

            cbc7afe8-3289-4894-907d-ca6e911930fd-image.png

            Natürlich kann man sich so auch den Datenpunkt aus Textbausteinen zusammenbauen:
            f0ec11b7-a460-450d-82dc-8efc2cb3838b-image.png

            ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

            MartinSUM 1 Antwort Letzte Antwort
            0
            • BananaJoeB BananaJoe

              @martinsu mal einen Schritt zurück: in ioBroker würde ich für so etwas einen eigenen Datenpunkt unterhalb von 0_userdata.0 einsetzen. Da packe ich Parameter für Skripte hin um diese ggf. z.B. über eine VIS, Zeitpläne oder Sensoren ändern zu können.
              Das Skript holt sich am Anfang und bei Änderung den Wert, alternativ bei Verwendung innerhalb der Funktionen.
              Damit ich nicht 100 mal den Datenpunkt angeben muss definiere ich den einmal in einer Variablen und nutze diese dann im Rest des Skriptes:

              cbc7afe8-3289-4894-907d-ca6e911930fd-image.png

              Natürlich kann man sich so auch den Datenpunkt aus Textbausteinen zusammenbauen:
              f0ec11b7-a460-450d-82dc-8efc2cb3838b-image.png

              MartinSUM Offline
              MartinSUM Offline
              MartinSU
              schrieb am zuletzt editiert von
              #7

              Das ich so eine Reaktion auslöse, hätte ich nicht gedacht....
              Und so etwas wie bei dem "Kilo-Mark-Wettbewerb" wollte ich natürlich auch nicht.
              Ob DEFINE oder Konstante wäre auch relative egal.
              Warum nicht von anderen Sprachen lernen und so eine Art Präprozessor schaffen?
              Wäre es so schwer, bei einem "Script ausführen" die Ersetzungen vorzunehmen?
              Ich glaube, jetzt habe ich für genug Verwirrung gesorgt, danke für Eure Beteiligung.

              haus-automatisierungH AsgothianA CodierknechtC 3 Antworten Letzte Antwort
              0
              • MartinSUM MartinSU

                Das ich so eine Reaktion auslöse, hätte ich nicht gedacht....
                Und so etwas wie bei dem "Kilo-Mark-Wettbewerb" wollte ich natürlich auch nicht.
                Ob DEFINE oder Konstante wäre auch relative egal.
                Warum nicht von anderen Sprachen lernen und so eine Art Präprozessor schaffen?
                Wäre es so schwer, bei einem "Script ausführen" die Ersetzungen vorzunehmen?
                Ich glaube, jetzt habe ich für genug Verwirrung gesorgt, danke für Eure Beteiligung.

                haus-automatisierungH Online
                haus-automatisierungH Online
                haus-automatisierung
                Developer Most Active
                schrieb am zuletzt editiert von
                #8

                @martinsu sagte in #define in Blockly ? [geht nicht]:

                Ob DEFINE oder Konstante wäre auch relative egal.
                Warum nicht von anderen Sprachen lernen und so eine Art Präprozessor schaffen?

                ioBroker setzt auf nodejs auf. Da kann man nicht einfach irgendwelche Konzepte mal eben übernehmen: https://github.com/nodejs/node

                Das würde alles nur komplizierter machen. Für welchen Mehrwert? Dass Scripts 1ms schneller laufen? Wenn wir so detailliert optimieren möchten, gibt es vorher tausende Stellen welche das eher verdient hätten.

                Schau gerne den Code des js-controller oder JavaScript Adapters an und mach dort Vorschläge zur Performance-Optimierung. Das ist immer willkommen!

                🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                📚 Meine inoffizielle ioBroker Dokumentation

                1 Antwort Letzte Antwort
                2
                • MartinSUM MartinSU

                  Das ich so eine Reaktion auslöse, hätte ich nicht gedacht....
                  Und so etwas wie bei dem "Kilo-Mark-Wettbewerb" wollte ich natürlich auch nicht.
                  Ob DEFINE oder Konstante wäre auch relative egal.
                  Warum nicht von anderen Sprachen lernen und so eine Art Präprozessor schaffen?
                  Wäre es so schwer, bei einem "Script ausführen" die Ersetzungen vorzunehmen?
                  Ich glaube, jetzt habe ich für genug Verwirrung gesorgt, danke für Eure Beteiligung.

                  AsgothianA Offline
                  AsgothianA Offline
                  Asgothian
                  Developer
                  schrieb am zuletzt editiert von
                  #9

                  @martinsu sagte in #define in Blockly ? [geht nicht]:

                  Wäre es so schwer, bei einem "Script ausführen" die Ersetzungen vorzunehmen?

                  Ja.

                  Wie @haus-automatisierung geschrieben hat müsste man dafür das in nodeJS einbauen lassen, bzw. alternativ dazu eine JS-Adapter eigene Funktion als Präprozessor schreiben der jedes Skript beim starten einmal durchnudelt und verändert - dadurch entspricht dann das was der Benutzer lesen kann nicht mehr dem was ausgeführt wird.

                  Ich denke da stehen Aufwand und Ergebnis in keinem Sinnvollen Zusammenhang.

                  Das Thema mit einem "const" block könnte nochmal beleuchtet werden - allerdings nicht aus der Sicht der Performance-Verbesserung sondern der Absicherung. Das was als "const" definiert wird muss bei Definition mit einem Wert versehen werden und kann nicht an die Variablen-Blöcke zur Wert-Anpassung angedockt werden.

                  Damit liessen sich benannte Konstanten schaffen die nicht aus versehen in einem langen Blockly mit anderen Werten beschrieben werden können.

                  Auch das ist aber ein untergeordnetes Problem - bei komplexeren Problemen wird im Zweifelsfall dann doch direkt in JS geschrieben - und da hat man die Option bereits.

                  A.

                  ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                  "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                  1 Antwort Letzte Antwort
                  2
                  • MartinSUM MartinSU

                    Das ich so eine Reaktion auslöse, hätte ich nicht gedacht....
                    Und so etwas wie bei dem "Kilo-Mark-Wettbewerb" wollte ich natürlich auch nicht.
                    Ob DEFINE oder Konstante wäre auch relative egal.
                    Warum nicht von anderen Sprachen lernen und so eine Art Präprozessor schaffen?
                    Wäre es so schwer, bei einem "Script ausführen" die Ersetzungen vorzunehmen?
                    Ich glaube, jetzt habe ich für genug Verwirrung gesorgt, danke für Eure Beteiligung.

                    CodierknechtC Offline
                    CodierknechtC Offline
                    Codierknecht
                    Developer Most Active
                    schrieb am zuletzt editiert von Codierknecht
                    #10

                    @martinsu sagte in #define in Blockly ? [geht nicht]:

                    so eine Art Präprozessor schaffen?

                    Dazu müsstest Du NodeJS umbauen. Viel Vergnügen und Erfolg dabei :grin:

                    Ich glaube, jetzt habe ich für genug Verwirrung gesorgt

                    Verwirrung nicht - das Konzept ist ja altbekannt.
                    Es wird allerdings (fast) nur in C/C++ verwendet. Auch C# kennt das nicht mehr.

                    Ob DEFINE oder Konstante wäre auch relative egal.

                    Es wurde ja schon mehrfach geschrieben: In NodeJS und so ziemlich allen anderen Sprachen gibt es dafür das Konzept der Konstanten.
                    Entweder wechselst Du von Blockly zu JS (wenn man von C kommt dürfte das nicht sonderlich schwierig sein), oder Du wartest, ob das demnächst mal in Blockly implementiert wird.

                    Aber: Die allermeisten Entwicklungen in ioBroker werden ehrenamtlich in der Freizeit gemacht. Da heißt es auch schon mal: Warten!

                    Warum nicht von anderen Sprachen lernen

                    C bzw. C++ sind 50 bzw. 40 Jahre alt.
                    Dann könnte man auch gleich hingehen und wieder die Zeiger-Verbiegerei einführen :grinning:

                    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                    Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                    HmIP|ZigBee|Tasmota|Unifi
                    Zabbix Certified Specialist
                    Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                    BananaJoeB 1 Antwort Letzte Antwort
                    3
                    • CodierknechtC Codierknecht

                      @martinsu sagte in #define in Blockly ? [geht nicht]:

                      so eine Art Präprozessor schaffen?

                      Dazu müsstest Du NodeJS umbauen. Viel Vergnügen und Erfolg dabei :grin:

                      Ich glaube, jetzt habe ich für genug Verwirrung gesorgt

                      Verwirrung nicht - das Konzept ist ja altbekannt.
                      Es wird allerdings (fast) nur in C/C++ verwendet. Auch C# kennt das nicht mehr.

                      Ob DEFINE oder Konstante wäre auch relative egal.

                      Es wurde ja schon mehrfach geschrieben: In NodeJS und so ziemlich allen anderen Sprachen gibt es dafür das Konzept der Konstanten.
                      Entweder wechselst Du von Blockly zu JS (wenn man von C kommt dürfte das nicht sonderlich schwierig sein), oder Du wartest, ob das demnächst mal in Blockly implementiert wird.

                      Aber: Die allermeisten Entwicklungen in ioBroker werden ehrenamtlich in der Freizeit gemacht. Da heißt es auch schon mal: Warten!

                      Warum nicht von anderen Sprachen lernen

                      C bzw. C++ sind 50 bzw. 40 Jahre alt.
                      Dann könnte man auch gleich hingehen und wieder die Zeiger-Verbiegerei einführen :grinning:

                      BananaJoeB Offline
                      BananaJoeB Offline
                      BananaJoe
                      Most Active
                      schrieb am zuletzt editiert von
                      #11

                      @codierknecht sagte in #define in Blockly ? [geht nicht]:

                      Warum nicht von anderen Sprachen lernen

                      C bzw. C++ sind 50 bzw. 40 Jahre alt.
                      Dann könnte man auch gleich hingehen und wieder die Zeiger-Verbiegerei einführen

                      Bzw: Man hat ggf. gelernt und das bewusst weggelassen

                      ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

                      CodierknechtC 1 Antwort Letzte Antwort
                      0
                      • BananaJoeB BananaJoe

                        @codierknecht sagte in #define in Blockly ? [geht nicht]:

                        Warum nicht von anderen Sprachen lernen

                        C bzw. C++ sind 50 bzw. 40 Jahre alt.
                        Dann könnte man auch gleich hingehen und wieder die Zeiger-Verbiegerei einführen

                        Bzw: Man hat ggf. gelernt und das bewusst weggelassen

                        CodierknechtC Offline
                        CodierknechtC Offline
                        Codierknecht
                        Developer Most Active
                        schrieb am zuletzt editiert von
                        #12

                        @bananajoe sagte in #define in Blockly ? [geht nicht]:

                        Man hat ggf. gelernt und das bewusst weggelassen

                        In den Zeiten reiner Textbildschirme war das Verbiegen des Videozeigers einfach cool.
                        Im Sinne von Sicherheit ist das direkte Beschreiben von Speicherbereichen und Verbiegen von Zeigern aber 'ne mittelschwere Katastrophe. Das hat man ja nicht ohne Grund mittlerweile in vielen modernen Sprachen entfernt.
                        Auch das de-referenzieren von Zeigern ist problematisch (verpönt sowieso) und in vielen Sprachen nicht mehr möglich.

                        Wird aber so langsam reichlich O.T.

                        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                        Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                        HmIP|ZigBee|Tasmota|Unifi
                        Zabbix Certified Specialist
                        Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                        1 Antwort Letzte Antwort
                        0
                        • CodierknechtC Codierknecht

                          @haus-automatisierung sagte in #define in Blockly ? [geht nicht]:

                          In Blockly bleiben Dir also nur die Variablen. In JavaScript oder TypeScript würde man eine Konstante anlegen.

                          Wäre ein Block "Konstante" nicht etwas für ein künftiges Update?

                          @MartinSU
                          Wie @haus-automatisierung schon schreibt, gibt es in der JS-Welt keinen Präprozessor, demnach auch keine Makros und somit kein #define.
                          In der ganz großen Mehrheit der Sprachen macht man sowas mit Konstanten. Die erfüllen genau den von Dir gewünschten Zweck.

                          OT:
                          Es gab in der "DOS-International" mal den "Kilo-Mark-Wettbewerb". Um 1.024 DM gewinnen zu können durfte das eingereichte Programm (das Listing) max. 1.024 Byte groß sein.
                          Da hat mal jemand ein komplexes Menüsystem programmiert (in ANSI-C). Damit das Listing die Größe nicht überschritt, hat der Kerl den Präprozessor komplett vergewaltigt.
                          Das wimmelte nur so vor Konstrukten wie dem hier:

                          #define f10 for(i=0;i<10;i++) {
                          #define f20 for(i=0;i<20;i++) {
                          #define a if (i > 0)
                          // und noch jede Menge weitere
                          

                          Fast alles was mehr als 1x im Code vorkam, wurde durch Makros definiert.
                          Im Code wurde dann nur noch f10, f20, a usw. aufgerufen.
                          Konnte in der Form natürlich keine Sau lesen.

                          MartinPM Online
                          MartinPM Online
                          MartinP
                          schrieb am zuletzt editiert von MartinP
                          #13

                          @codierknecht said in #define in Blockly ? [geht nicht]:

                          Wäre ein Block "Konstante" nicht etwas für ein künftiges Update?

                          Da bin ich mir nicht sicher - als eigenen Block hat man Konstanten ja schon - wenn auch unbenannt ;-) 2bbf85a9-b427-4724-a50e-bdd06762b03a-grafik.png

                          Vielleicht das Definieren von Variablen etwas erweitern ("const" Haken zum checken, und ein "Preset-Wert")...
                          Möglicherweise müsste man dann aber in den Blöcken auch kennzeichnen, ob die Variable "const" ist ...

                          983d1750-8e03-465f-8a25-777c20379ca6-grafik.png

                          Ich denke, man sollte das aber aufklappbar hinter einem "Erweitert" Pfeil verbergen. Blockly soll ja einsteigerfreundlich bleiben ....

                          Intel(R) Celeron(R) CPU N3000 @ 1.04GHz 8G RAM 480G SSD
                          Virtualization : unprivileged lxc container (debian 12 on Proxmox 8.4.14)
                          Linux pve 6.8.12-16-pve
                          6 GByte RAM für den Container
                          Fritzbox 6591 FW 8.03 (Vodafone Leih-Box)
                          Remote-Access über Wireguard der Fritzbox

                          haus-automatisierungH 1 Antwort Letzte Antwort
                          0
                          • MartinPM MartinP

                            @codierknecht said in #define in Blockly ? [geht nicht]:

                            Wäre ein Block "Konstante" nicht etwas für ein künftiges Update?

                            Da bin ich mir nicht sicher - als eigenen Block hat man Konstanten ja schon - wenn auch unbenannt ;-) 2bbf85a9-b427-4724-a50e-bdd06762b03a-grafik.png

                            Vielleicht das Definieren von Variablen etwas erweitern ("const" Haken zum checken, und ein "Preset-Wert")...
                            Möglicherweise müsste man dann aber in den Blöcken auch kennzeichnen, ob die Variable "const" ist ...

                            983d1750-8e03-465f-8a25-777c20379ca6-grafik.png

                            Ich denke, man sollte das aber aufklappbar hinter einem "Erweitert" Pfeil verbergen. Blockly soll ja einsteigerfreundlich bleiben ....

                            haus-automatisierungH Online
                            haus-automatisierungH Online
                            haus-automatisierung
                            Developer Most Active
                            schrieb am zuletzt editiert von
                            #14

                            @martinp sagte in #define in Blockly ? [geht nicht]:

                            Vielleicht das Definieren von Variablen etwas erweitern ("const" Haken zum checken, und ein "Preset-Wert")...

                            Das wäre dann ein Feature Request in diesem Projekt: https://github.com/google/blockly

                            🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                            🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                            📚 Meine inoffizielle ioBroker Dokumentation

                            1 Antwort Letzte Antwort
                            1
                            Antworten
                            • In einem neuen Thema antworten
                            Anmelden zum Antworten
                            • Älteste zuerst
                            • Neuste zuerst
                            • Meiste Stimmen


                            Support us

                            ioBroker
                            Community Adapters
                            Donate
                            FAQ Cloud / IOT
                            HowTo: Node.js-Update
                            HowTo: Backup/Restore
                            Downloads
                            BLOG

                            881

                            Online

                            32.5k

                            Benutzer

                            81.8k

                            Themen

                            1.3m

                            Beiträge
                            Community
                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                            ioBroker Community 2014-2025
                            logo
                            • Anmelden

                            • Du hast noch kein Konto? Registrieren

                            • Anmelden oder registrieren, um zu suchen
                            • Erster Beitrag
                              Letzter Beitrag
                            0
                            • Home
                            • Aktuell
                            • Tags
                            • Ungelesen 0
                            • Kategorien
                            • Unreplied
                            • Beliebt
                            • GitHub
                            • Docu
                            • Hilfe