Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Sinnvolle! Fehlermeldungen

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

    #16
    Ich erhielt gerade folgende Fehlermeldung:

    Code:
    Syntaxfehler in Zeile:[260] 
     >AlarmFensterTuer("AlarmFensterOffen-3/4/100",btnSafetyEGFensterTuer,pPgID_Safety)< in der Datei "D:/EIB_KNX/EibPC/EibstudioData/tmpApp.txt"
      Funktion unbekannt in >alarmfenstertuer< 
     ID:6
     EibParser wurde mit Fehler beendet.
    Nix Besonderes? Nein, wirklich nicht, aber:

    Wenn schon eine "Funktion" bemängelt wird, dann sagt doch bitte auch welche...

    Das ist eigentlich das Mindeste, was ich von einer Fehlermeldung verlange.

    Im obigen Fall war es eine mit "\\" fortgesetzte Zeile, die irgendwie muckte. Diese verrückte Zeilenfortsetzung k... mich eh an - jede Zeile sollte mit ";" abgeschlossen werden und gut is!

    Kommentar


      #17
      Zitat von klaus_kraemer Beitrag anzeigen
      Ich erhielt gerade folgende Fehlermeldung:
      Wenn schon eine "Funktion" bemängelt wird, dann sagt doch bitte auch welche...
      AlarmFensterTuer("AlarmFensterOffen-3/4/100",btnSafetyEGFensterTuer,pPgID_Safety)< in der Datei "D:/EIB_KNX/EibPC/EibstudioData/tmpApp.txt"
      Funktion unbekannt in >alarmfenstertuer<
      offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
      Enertex Produkte kaufen

      Kommentar


        #18
        Zitat von enertegus Beitrag anzeigen
        AlarmFensterTuer("AlarmFensterOffen-3/4/100",btnSafetyEGFensterTuer,pPgID_Safety)< in der Datei "D:/EIB_KNX/EibPC/EibstudioData/tmpApp.txt"
        Funktion unbekannt in >alarmfenstertuer<
        Ja, und >alarmfenstertuer< ist ein Makro mit 'zig Zeilen...

        Da wäre die wirkliche Fehlerursache und -stelle im Quelltext schon was anderes!

        Kommentar


          #19
          Ich kenne jetzt den Code nicht, aber bei mir kommt des öfteren eine Meldung: Syntaxfehler in Datei ....

          Das hilft irgendwie überhaupt nicht weiter.
          BR
          Marc

          Kommentar


            #20
            Zitat von klaus_kraemer Beitrag anzeigen
            Da wäre die wirkliche Fehlerursache und -stelle im Quelltext schon was anderes!
            Die Ursache ist, dass die Funktion dem Compiler nicht bekannt ist. In deinem Fall offenbar verursacht durch die Zeichensetzung \\ , könnte aber auch einfach ein Problem beim Einbinden der Bibliothek sein. Oder meinst du, dass es ein ganz anderes Problem war und die Fehlermeldung des Compilers falsch?
            offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
            Enertex Produkte kaufen

            Kommentar


              #21
              Zitat von klaus_kraemer Beitrag anzeigen
              Diese verrückte Zeilenfortsetzung k... mich eh an - jede Zeile sollte mit ";" abgeschlossen werden und gut is!
              Diese merkwürdige Zeilenfortsetzung kann man einfach weglassen. Ich nutze sie z.B. überhaupt nicht.
              Alle Blöcke in geschweiften Klammern - und schon kann man normale Zeilenumbrüche verwenden.

              Das erspart einem einiges, glaube ich.

              Kommentar


                #22
                Zeilenumbrüche sind zB bei if Auswertungen im Sinn der lesbarkeit schon OK...

                if Rhabarber==EIN and Hugo== AUS or FritztheCat==HastDuNOchNieGesehen then {...
                oder

                if Rhabarber==EIN and \\
                Hugo== AUS or \\
                FritztheCat==HastDuNOchNieGesehen then {...
                ist schon lesbarer
                EPIX
                ...und möge der Saft mit euch sein...
                Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

                Kommentar


                  #23
                  Zitat von enertegus Beitrag anzeigen
                  Die Ursache ist, dass die Funktion dem Compiler nicht bekannt ist. In deinem Fall offenbar verursacht durch die Zeichensetzung \\ , könnte aber auch einfach ein Problem beim Einbinden der Bibliothek sein. Oder meinst du, dass es ein ganz anderes Problem war und die Fehlermeldung des Compilers falsch?
                  Nun, nachdem ich beim mehrfach wiederholten durchgehen des Codes keinen Fehler gefunden habe, ging ich zum Probieren über. Irgendwie intuitiv habe ich das "\\" gelöscht und aus zweien eine lange Befehlszeile gemacht. Das war's dann und es ließ sich kompilieren.

                  Mich stört ja hauptsächlich nur, dass wenn ein Fehler auftritt, absolut keine Hilfe zur Lokalisation kommt und man sich dann natürlich einen Wolf sucht.

                  Kommentar


                    #24
                    Zitat von EPIX Beitrag anzeigen
                    Zeilenumbrüche sind zB bei if Auswertungen im Sinn der lesbarkeit schon OK...
                    ...
                    oder
                    Code:
                    if Rhabarber==EIN and \\
                    Hugo== AUS or \\
                    FritztheCat==HastDuNOchNieGesehen then {.
                    ist schon lesbarer
                    aber
                    Code:
                    if Rhabarber == EIN and
                       Hugo == AUS or
                       FritztheCat == HastDuNOchNieGesehen then {.
                    ist halt noch besser lesbar und die "\\" meines Erachtens absolut überflüssig, da einem "if" immer ein "then" folgt.

                    Ansonsten sollte man es so halten, wie in C#, Java: Eine Codezeile endet mit ";", egal wie viele Zeilenschaltungen und Tabs dann zur besseren Darstellung innerhalb einer Codezeile enthalten sind.

                    Kommentar


                      #25
                      Für alle Ungläubingen ... und die, die es noch werden wollen ...

                      Zitat von klaus_kraemer Beitrag anzeigen
                      aber
                      Code:
                      [B][COLOR="red"]{[/COLOR][/B]
                      if Rhabarber == EIN and
                         Hugo == AUS or
                         FritztheCat == HastDuNOchNieGesehen then { } endif
                      [B][COLOR="Red"]}[/COLOR][/B]
                      So geht das.
                      Früher hatte ich solch einen Block über den gesamten Code. Da war dann aber die Ausgabe von Fehlern schlecht. Wie die Fehleranzeige dann heute aussieht, kann ich nicht sagen. Sie soll sich aber verbessert haben.

                      ist halt noch besser lesbar und die "\\" meines Erachtens absolut überflüssig, da einem "if" immer ein "then" folgt.

                      Ansonsten sollte man es so halten, wie in C#, Java: Eine Codezeile endet mit ";", egal wie viele Zeilenschaltungen und Tabs dann zur besseren Darstellung innerhalb einer Codezeile enthalten sind.
                      Genau. Schon im "Handbuch zum Kompilerbau" bzw. der "Goldenen Regel zur Erstellung eines Sprach-Syntaxes" steht:

                      Blockbildung ist ein grundlegendes Mittel, um Befehlsfolgen in zusammenhängende Bereiche zu gliedern.
                      Früher, zur Zeit der aller ersten Programmiersprachen gab es keine Blockmarker. Hier wurden Befehlsfolgen zeilenweise getrennt.
                      Modernere Sprachen setzen Marker für die Blockerkennung ein, wie z.B. If - then - else - endif etc.
                      Hierdurch werden Befehl und Blockbildung in zusammengehörige Token kodiert.
                      In den meisten modernen Programmiersprachen werden Blöcke durch kurze Marker, meist Klammern in diversen Formen, gebildet, z.B. if() {} else {}

                      Beim eibPC ist es also doppelt gemoppelt: Einzeilige Blöcke (durch \\ kann die Zeile in der nächsten weitergeführt werden) und Blockbildung durch spezifische Token. Zusätzlich kann man aber auch noch einzeilige Kommandos auf mehrere verteilen, wenn man geschweifte Klammern verwendet.

                      Wünschenswert wäre, dass beim eibPC Blöcke durch die spezifischen Marker erkannt werden. Hierdurch können alle Arten von Blöcken problemlos erkannt werden. Einfacher geht es wohl kaum, denn der eibPC kennt ja nur if - then - else - endif-Blöcke.
                      BR
                      Marc

                      Kommentar


                        #26
                        Code:
                        if Rhabarber == EIN and
                        Hugo == AUS or
                        FritztheCat == HastDuNOchNieGesehen then {.
                        ist halt noch besser lesbar und die "\\" meines Erachtens absolut überflüssig, da einem "if" immer ein "then" folgt.
                        sorry da habe ich dich missverstanden - ich dachte du wolltest die ganze Zeile in einer Wuscht...
                        NATÜRLICH! ist deine Version besser (lesbarer!)
                        somit
                        {
                        if Rhabarber == EIN and
                        Hugo == AUS or
                        FritztheCat == HastDuNOchNieGesehen then { } endif
                        }
                        ECHT!!! das geht??!!
                        WARUM sagt denn das keiner?
                        EPIX
                        ...und möge der Saft mit euch sein...
                        Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

                        Kommentar


                          #27
                          noch so ein Beispiel:

                          Code:
                          // Wohnzimmer OG Jalousie Webseiten
                          // Definition der eibPC, Makro und Webserver-Eintraege
                          // 4x6 Elemente
                          //------------------------------------------------------------------------------------
                          // Jalousien WZ_OG
                          //------------------------------------------------------------------------------------
                          
                          page(WZOGJalRollosPageID)[$Wohnzimmer$,$Jalousien$]   <- Zeile 8
                          header (0)
                          footer (0)
                          design $black$
                          Fehlermeldung:
                          Syntaxfehler in Zeile:[8]
                          >page(WZOGJalRollosPageID)[$Wohnzimmer$,$Jalousien$]< in der Datei "C:/_DATA/EIB/_sync_Daten/eibPC/code/hoe_v_ogwz_jalousie.epc"
                          Anweisung erstreckt sich bis zur Zeile: 13
                          Gültig bis Spaltenposition: {12}
                          STOP Parser --> [$Wohnzimmer$,$Jalousien$]
                          Keine Ahnung wo der Fehler ist - ich such seit fast 1 Stunde...

                          LÖSUNG: es fehlt das #addto [WebServer]
                          EPIX
                          ...und möge der Saft mit euch sein...
                          Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

                          Kommentar


                            #28
                            Zitat von EPIX Beitrag anzeigen
                            sorry da habe ich dich missverstanden - ich dachte du wolltest die ganze Zeile in einer Wuscht...
                            NATÜRLICH! ist deine Version besser (lesbarer!)
                            somit

                            ECHT!!! das geht??!!
                            WARUM sagt denn das keiner?
                            Also gehen tut's glaube ich nicht, das ist die Wunschvorstellung - oder irre ich mich???

                            Kommentar


                              #29
                              Zitat von klaus_kraemer Beitrag anzeigen
                              Also gehen tut's glaube ich nicht, das ist die Wunschvorstellung - oder irre ich mich???
                              Doch, doch, das geht so wie ich es gezeigt habe.
                              BR
                              Marc

                              Kommentar


                                #30
                                Warum gibt es denn hier keine Datei- und Zeilenangabe???

                                "Datei: "D:/EIB_KNX/EibPC/EibstudioData/tmpMacroFuncOut.txt" wurde geschrieben
                                Laufzeitfehler:
                                ! Variable nicht definiert: >FW_isHeizbedarf< !
                                ID:11
                                EibParser wurde mit Fehler beendet."


                                In irgendeiner Quelldatei und dort in irgendeiner Zeile muss FW_isHeizbedarf doch stehen! Hier keine Quellangabe zu machen, zwingt zur mühsamen Fehlersuche, dabei wär' es doch nicht sonderlich schwer, diese - bei praktisch jedem Compiler, den ich habe - selbstverständliche Info mitzugeben.

                                Kommentar

                                Lädt...
                                X