Seite 1 von 1

Macro-Fehler

Verfasst: 04.06.2006 21:54
von Leonhard

Code: Alles auswählen

; Das Macro
Macro SetGadgetAttribute(Gadget, Attribut, Value)
	If Attribut = #PB_String_Password
		If Value = #PB_Ignore : Value = '*' : EndIf
		SendMessage_(GadgetID(Gadget), 204, Value, #Null)
	Else
		SetGadgetAttribute(Gadget, Attribut, Value)
	EndIf
EndMacro
; Der Aufruf
SetGadgetAttribute(#igString1, #PB_String_Password, '*')
Bei mir gibt es da einen Macro-Fehler. Ich weis auch, wiso: Ich verwende das Macro in dem Macro. Dies ist ein Interner Fehler. Ein Macro sollte nicht in sich selbst eingefügt werden. Dies fürt (wie hier) zu Fehlern. Kann man das bei der Macro-Erstellung verbessern?

Verfasst: 04.06.2006 22:27
von Kaeru Gaman
wie jetzt.....? :freak:

Verfasst: 04.06.2006 22:33
von winduff
Kaeru... zu deiner Signatur

Wir haben keine großen Signaturen hier im Board glaube ich, v. dh könntest du den bitte rausnehmen? /:->

Verfasst: 04.06.2006 22:51
von Kaeru Gaman
nein.

die is aus aktuellem anlass so.

http://www.purebasic.fr/german/viewtopi ... 5143#95143

Verfasst: 04.06.2006 23:28
von Leonhard
ganz einfach: In dem Macro wird das Macro verwendet. Das Macro ist gleich mit einer PB-Standart-Funktion. Es währe Praktisch, wenn das Macro in sich nicht verwendet wird, da man dort einen dummen Fehler bekommt.

Verfasst: 04.06.2006 23:43
von Hellhound66
Ich versteh das Problem nicht. Natürlich muss es einen Fehler geben, wenn ein Macro im selben Macro benutzt wird, weil es eben nicht einer Prozedur gleichzusetzen ist. Der Code im Macro wird ja komplett genommen und an alle Stellen im Code, wo das Macro aufgerufen wird kopiert. Da eben nicht mit Referenzen gearbeitet wird, sondern mit Kopien, müsstest du lediglich den Platz für unendlich Kopien haben, dann würds funktionieren. Und dass dadurch eine Fehlermeldung generiert wird ist doch mehr als wünschenswert.
Es währe Praktisch, wenn das Macro in sich nicht verwendet wird, da man dort einen dummen Fehler bekommt.
Klar, es gibt ja auch keinen Fehler im Programm, wenn man ein Macro auch nicht in sich selbst packt. Das macht ja auch null Sinn.