Ankündigung

Einklappen
Keine Ankündigung bisher.

Makro Parameter ersetzen wenn %-Wert

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

    Makro Parameter ersetzen wenn %-Wert

    ich habe ein Makro, dass nur dann auf den Bus schreibt wenn eine Variable einen bestimmten Wert hat (ich kann damit simulieren dass der eibPC ausfällt...):

    Code:
    :begin xwrite(GA, Value)
    :return {
    if SRV_Active == ON then write(GA^, Value^) endif;
    }
    :end
    und wenn ich das Makto verwende, z.B.:
    Code:
    xwrite("EGW_JALB1UP_Position-4/6/30", 65%)
    dann erhalte ich einen Fehler:
    ...Makro genieriert ungültigen Code > { if SRV_Active == ON then write("EGW_JALB1UP_Position-4/6/30", 65%%) endif; ...

    es wird also ein weiteres % an den Parameter angefügt. Warum? Was muss ich anders machen?

    #2
    Du brauchst die ^ gar nicht in diesem Fall. Die sind nur dafür da, um das Argument als Text mit anderen Textkonstanten zu verknüpfen.

    Kommentar


      #3
      Code:
      :begin xwrite(GA, Value)
      :return {
      if SRV_Active == ON then write(GA, Value) endif;
      }
      :end​
      führt genauso zu dem Fehler:
      …Makro genieriert ungültigen Code > { if SRV_Active == ON then write("EGW_JALB1UP_Position-4/6/30", 65%%) endif;}…

      Kommentar


        #4
        Dann hilft wohl nur, den Prozentwert zunächst einer (neuen) Variablen zuzuweisen und diese an das Makro weiterzureichen.

        Kommentar


          #5
          Wo kommt denn dieses % denn her? Ist für mich ein Bug. Oder kann man mir das Design hierbei erklären?

          Kommentar


            #6
            Müssen wir prüfen, wo das zweite % genau herkommt.
            Generell dürfen in Makroargumenten keine Sonderzeichen, Leerzeichen usw. enthalten sein.

            In diesem Fall könnte 65% vorher als u08 konvertiert werden, ist aber offenbar nicht der Fall.

            Kommentar


              #7
              gibt’s hierzu Neuigkeiten? Für mich ist „%“ ein Datentyp-determinator und sollte auch an Makroparameter übergeben werden können?

              Kommentar

              Lädt...
              X