Seite 1 von 1
Problem beim Auflösen verschachtelter Makros
Verfasst: 19.03.2013 01:40
von Regenduft
Hi liebe Leute,
folgende Situation: Ein Makro wird aufgelöst. Das Ergebnis ist ein weiteres Makro. Dieses "weitere Makro" sollte wieder aufgelöst werden, was aber nicht funktioniert (siehe Quelltext für genaue Fehlermeldung).
Ist dieses Verhalten so gewollt, ist das ein Bug oder begehe ich einfach einen Denkfehler? Hat da jemand eine Ahnung?
Aus dem Bauch heraus würde ich behaupten, dass ich mit PB 4.xx bereits Code in diesem Stil verwendet hatte und dass dieser keine Probleme machte.
Code: Alles auswählen
Macro a(foo)
foo()
EndMacro
Macro b()
Debug "Vor der Auflösung erscheint folgender Makro-Fehler:"
Debug "[de] Line 10: b() ist keine Function, Array, Makro oder LinkedList"
Debug "[en] Line 10: b() is Not a function, Array, List, Map Or Macro"
EndMacro
a(b)
Re: Problem beim Auflösen verschachtelter Makros
Verfasst: 19.03.2013 01:48
von cxAlex
Ich wage zu behaupten irgendwann im englischen Forum mal ein Statement gelesen zu haben dass das gewollt nicht funktioniert, bin mir aber nicht sicher.
Allerdings würde sich so eine endlose Rekursion im Makro erzeugen lassen wenn das so funktionieren würde:
Code: Alles auswählen
Macro a(foo)
foo()
EndMacro
Macro b()
a(b)
EndMacro
b()
Was ja bei
auch vom Compiler bemängelt wird, eventuell schaltet sich hier ein Schutz - Mechanismus ein?
Gruß, Alex
Re: Problem beim Auflösen verschachtelter Makros
Verfasst: 19.03.2013 01:49
von STARGÅTE
Scheint irgendwie an den Klammern zu liegen.
Denn sowohl
Code: Alles auswählen
Macro a(foo)
foo
EndMacro
Macro b()
;...
EndMacro
a(b())
als auch
funktioniert.
Re: Problem beim Auflösen verschachtelter Makros
Verfasst: 19.03.2013 02:26
von Regenduft
Danke euch zwei für die schnellen Antworten mitten in der Nacht!

Das ist mir jetzt erst bewusst geworden, dass ich die Klammern beim Isolieren des Problems vergessen hatte.
Die Klammern scheinen übrigens nicht das einzige Problem zu sein, sondern "Wortgrenzen" im Allgemeinen, denn auch die Verwendung von "#" als Verkettungszeichen macht anscheinend Probleme. Das spricht doch dann eigentlich für einen Bug, oder? (Lieber auf Nummer sicher gehen bevor ich ins Offizielle poste...)
Code: Alles auswählen
Macro a(foo)
x#foo
EndMacro
Macro xb
;...
EndMacro
a(b)
Re: Problem beim Auflösen verschachtelter Makros
Verfasst: 19.03.2013 02:48
von NicTheQuick
Der passenden Thread im englischen Forum war von mir:
Nested Macros
Re: Problem beim Auflösen verschachtelter Makros
Verfasst: 19.03.2013 03:07
von STARGÅTE
@NicTheQuick:
Ne das ist was anderes.
Hier geht es ja darum, das Macros einzeln definiert wurden dann eigentlich normal ersetzt werden sollten.
Bei deinem Thema ging es ja darum, das ein macro erst zu Kompilerzeiten gebaut wird.
Re: Problem beim Auflösen verschachtelter Makros
Verfasst: 19.03.2013 03:50
von Regenduft
Die "Nested Macros" à la NicTheQuick hatten (leider) noch nie funktioniert.
Die "Pseudo-nested Macros" (also mehrere verschachtelte aber nacheinander aufgelöste Makros - eigene Wortschöpfung) hatten früher aber funktioniert! Ich habe gerade nochmal einen alten (verworfenen) Code rausgekramt, wo ich das so gemacht hatte (und es mit ziemlicher Sicherheit früher funktionierte).
Hat jemand evtl. die Möglichkeit das ganze mal geschwind mit PB 4.xx zu testen?
(Kann ich hier gerade leider nicht selbst machen und in ein paar Stunden geht's wieder in die internetlose Reha-Klinik... Held gesucht!
)
EDIT: Hatte ich wohl Pech und die PB-Nachtschicht ist schon heim gegangen.
Wenn es sich bei dem Problem wirklich um einen Bug handelt wäre es nett, wenn jemand das ins offizielle Forum posten kann! (Danke schonmal!)