Ankündigung

Einklappen
Keine Ankündigung bisher.

Makro-Probleme

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

    #16
    Echt jetz?

    Hoi

    Oh jeh, der Unterstrich als Ersetzungszeichen???
    Wer hat sich denn das ausgedacht?
    Grüsse Bodo
    Fragen gehören ins Forum, und nicht in mein Postfach;
    EibPC-Fan; Wiregate-Fan; Timberwolf-Fan mit 30x 1-Wire Sensoren;

    Kommentar


      #17
      Zitat von Bodo Beitrag anzeigen
      Hoi
      Oh jeh, der Unterstrich als Ersetzungszeichen???
      ich
      offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
      Enertex Produkte kaufen

      Kommentar


        #18
        Speziell

        Ich bin ja nicht so der Linuxcrack, aber der Unterstrich soll doch längere Variablennahmen ohne Leerzeichen ermöglichen???
        Code:
        Fenster_Sued_Bad
        Grüsse Bodo
        Fragen gehören ins Forum, und nicht in mein Postfach;
        EibPC-Fan; Wiregate-Fan; Timberwolf-Fan mit 30x 1-Wire Sensoren;

        Kommentar


          #19
          Zitat von Bodo Beitrag anzeigen
          Speziell

          Ich bin ja nicht so der Linuxcrack, aber der Unterstrich soll doch längere Variablennahmen ohne Leerzeichen ermöglichen???
          Code:
          Fenster_Sued_Bad
          Richtig. Das geht auch im Makro, solange Du nicht ein Argument "Sued", Bad, oder Fenster verwendest. Also so groß ist die Einschränkung nicht.
          offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
          Enertex Produkte kaufen

          Kommentar


            #20
            nachdem ich's verstanden hab, find ich die Lösung sogar recht gut! :-)
            ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

            Kommentar


              #21
              Antwort ist schon gesagt worden, zu langsam
              Der schöne Niederrhein läßt Grüssen

              Andreas


              Alter Hof mit neuer Technik

              Kommentar


                #22
                Zitat von Uwe! Beitrag anzeigen
                nachdem ich's verstanden hab, find ich die Lösung sogar recht gut! :-)
                Sie ist fehlerträchtig, und das kann nicht wirklich gut sein.

                [highlight=epc]
                :begin TestMacro(Name,up,down,time,up_time,down_time )
                :return {
                Name^_^up_time=time
                Name^_^down_time=time
                }
                :end
                [/highlight]

                Das "^" zeigt, was jeweils als Name gedacht war, aber was kommt dabei wirklich heraus:

                [highlight=epc]

                if after(systemstart(), 1u64) then {
                TestMacro(Test,EIN,EIN,100u32,Var1,Var2)
                } end
                [/highlight]

                Habe ich nun zwei Variablen

                Test_Var1=100u32
                Test_Var2=100u32

                wie eigentlich gewünscht oder unerwartet:

                Test_EIN_100u32=100u32
                Test_EIN_100u32=100u32

                Zugegeben, das Beispiel ist konstruiert, macht aber hoffentlich deutlich, was ich zeigen möchte, und das man oft allenfalls per try-and-error herausfinden kann, was der Compiler daraus macht - im Handbuch habe ich jetzt keinen Hinweis gefunden, wie der Compiler in solchen Fällen vorgeht. Ich kann nur hoffen, das er es dann wenigstens immer gleich macht und es nicht auch noch von anderen, dem Anwender unbekannten Faktoren abhängt, was da dann durch was ersetzt wird.
                Tessi

                Kommentar


                  #23
                  Zitat von Tessi Beitrag anzeigen
                  wie eigentlich gewünscht oder unerwartet:

                  Test_EIN_100u32=100u32
                  Test_EIN_100u32=100u32.
                  Also ich hätte jetzt (nach dem ich's mal im HAndbuch gelsen hab) das "unerwartete" erwartet!

                  Und ich finde die Möglichkeit mit ^ und _ durchaus sinnvoll! Man muss es eben wissen!
                  ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

                  Kommentar


                    #24
                    Zitat von Uwe! Beitrag anzeigen
                    Also ich hätte jetzt (nach dem ich's mal im HAndbuch gelsen hab) das "unerwartete" erwartet!
                    Welche Passage im Handbuch sagt Dir, das der Compiler es so machen müsste? Entweder habe ich das übersehen, oder anders verstanden...
                    (Ich beziehe mich da auf "HandbuchEibPC-19.odt, 2011-06-17", das aktuell so auf der Homepage zu )

                    Zitat von Uwe! Beitrag anzeigen
                    Und ich finde die Möglichkeit mit ^ und _ durchaus sinnvoll! Man muss es eben wissen!
                    Man muss es wissen, das ist auf jeden Fall wahr. Ob es auch sinnvoll ist, nun darüber gehen unsere Meinungen auseinander. Ob der Ärger, den man sich damit einhandeln kann, durch die geringen Schreiberleichterung aufgewogen wird, wage ich zu bezweifeln.
                    Auch ist es weniger gut erkennbar, aus welche Bestandteilen ein zusammengesetzter Name überhaupt besteht, wenn ein "_" eine Trennstelle oder aber auch Bestandteil eines Parameternamens sein kann.

                    Aber, "Es iss' halt wie es iss."

                    Und einen habe ich noch:
                    [highlight=epc]
                    :begin TestMacro(Name_,time_,Name1,Name2,Name3)
                    :return {
                    Name_Name1=time_
                    Name_^Name2=time_
                    Name^_^Name3=time_
                    }
                    :end
                    [/highlight]

                    Was kommt dabei heraus:

                    [highlight=epc]
                    if after(systemstart(), 1u64) then {
                    TestMacro(Test,100u32,Var1,Var2,Var2)
                    } end
                    [/highlight]

                    Bekomme ich am Ende das:

                    Name_Var1=100u32 // weil kein Parameter "Name" existiert und wenn "Name_" als Parameter angesehen wird, kein Verknüpfungszeichen mehr da ist?
                    Test_Var2=100u32 // Weil Dank "^" "Name_" als Parameter angesehen werden kann und trotzdem noch ein Verknüpfungszeichen da ist?
                    Name_Var2=100u32 // Weil die beiden "^" eindeutig vorgeben das nur ein Parameter "Name" in frage kommt?

                    Oder erhalte ich das:

                    Test_Var1=100u32 // weil "_" letztes Zeichen des Parameternamens und zugleich auch noch Verknüpfungszeichen sein kann?
                    Test_Var2=100u32 // Weil "^" hier als redundant einfach ignoriert wird?
                    Test_Var2=100u32 // Weil "^_^" genauso wie "_^" und "_" behandelt wird?

                    Oder noch was anderes?

                    Dem Handbuch konnte ich dazu nichts entnehmen.
                    Tessi

                    Kommentar


                      #25
                      Zitat von Tessi Beitrag anzeigen
                      Welche Passage im Handbuch sagt Dir, das der Compiler es so machen müsste? Entweder habe ich das übersehen, oder anders verstanden...
                      die von mir oben zitierte.
                      ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

                      Kommentar


                        #26
                        Zitat von Uwe! Beitrag anzeigen
                        die von mir oben zitierte.
                        Da hättest du ja wenigstens die Tippfehler fixen können (so ist das ja nicht zu verstehen!) ... und den ... na ... äh ... "Vergleich" ... mit der objektorientierten Programmiersprache ...

                        Kann man nur hoffen, dass der Michael schnellstens zum Editor greift! Und für Michael noch ein Smiley:
                        BR
                        Marc

                        Kommentar

                        Lädt...
                        X