Ankündigung

Einklappen
Keine Ankündigung bisher.

Code in Makro auslagern

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

    [EibStudio] Code in Makro auslagern

    Hi,

    mit Makros hab ich ab und an noch immer so meine Probleme, wie man die Variablen am besten übergibt, Werte zurückgeliefert werden etc. So haben sich bei mir im Code etliche Stellen angesammelt, die "flach" programmiert sind, aber eigentlich förmlich nach einer Makro-Lösung "schreien". Gibt es denn ein generelles Vorgehen, wie man sozusagen "Flach nach Makro" umsetzten sollte?

    Ich geb euch mal ein Beispiel:

    Code:
    Rollo2_state = 0
    if "KG Pos Rollo Gast R-3/2/11" == 255 then Rollo2_state = 3 endif
    if "KG Pos Rollo Gast R-3/2/11" > 0 and "KG Pos Rollo Gast R-3/2/11" < 255 then Rollo2_state = 4 endif
    if "KG Pos Rollo Gast R-3/2/11" == 0 then Rollo2_state = 5 endif
    if change("KG Pos Rollo Gast R-3/2/11") then setpeslider(2, convert(convert(convert("KG Pos Rollo Gast R-3/2/11", 0f32)/2.55f32, 0u08), 0f32), ROLLER, Rollo2_state , 80) endif
    Rollo2 = convert(2.55f32 * getpeslider(2, 80), 0u08)
    if change(Rollo2) then write("KG Positionierung Gast R-3/5/11", Rollo2) endif
    Den Block hab ich rund 30mal untereinander. Wie würde man das am besten in ein Makro packen?

    Danke!
    ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

    #2
    Ich würde:
    1. Variablen "einsammeln" = Gemeinsamkeiten/Unterschiede finden
    2. Code in ein Makro packen (2. Editor aufmachen , Handbuch?, Header, Info, Klammern drum)
    3. Die Variablen (siehe 1) im neuen Makro umbenennen und in die Parameterliste stecken
    4. Codestellen durch Makro ersetzen
    Bei normaler Code-Ersetzung geht es eigentlich straight forward.
    Zuletzt geändert von saft6luck; 14.08.2015, 20:53.
    BR
    Marc

    Kommentar


      #3
      ungefähr so:

      Code:
      :begin RolloHandler(GA_Pos_status_Rollo,GA_Pos_set_Rollo,SLIDER_Rollo)  
      Rollo_State^SLIDER_Rollo = 0
      if GA_Pos_status_Rollo == 255 then Rollo_State^SLIDER_Rollo = 3 endif
      if GA_Pos_status_Rollo > 0 and GA_Pos_status_Rollo < 255 then Rollo_State^SLIDER_Rollo = 4 endif
      if GA_Pos_status_Rollo == 0 then Rollo_State^SLIDER_Rollo = 5 endif  
      if change(GA_Pos_status_Rollo) then setpeslider(2, convert(convert(convert(GA_Pos_status_Rollo, 0f32)/2.55f32, 0u08), 0f32), SLIDER_Rollo^SLIDER_Rollo, Rollo_State , 80) endif
      Rollo^SLIDER_Rollo = convert(2.55f32 * getpeslider(2, 80), 0u08) if change(Rollo^SLIDER_Rollo) then write(GA_Pos_set_Rollo, Rollo^SLIDER_Rollo) endif  
      :end
      Zuletzt geändert von cds; 18.08.2015, 19:17. Grund: Code correction

      Kommentar


        #4
        @cds: Vielen Dank! Das schau ich mir mal genauer an und versuche es umzusetzen.
        ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

        Kommentar

        Lädt...
        X