An Procedure Zahl oder String übergeben, geht es besser
Verfasst: 18.03.2018 21:05
schönen Guten Abend
ein Parameter der an eine Procedure übergeben wird, soll wahlweise eine Zahl oder ein String sein
In PB ist das normalerweise ohne nicht vorgesehen. Ich möchte auch keine Adresse übergeben.
Sondern wirklich entweder z.B. 69 oder einen String wie "65+85+84+79" angeben.
In folgendem Code habe ich das mit einem Macro gelöst, ist aber natürlich lange nicht perfekt,
sondern funktioniert nur unter bestimmten Voraussetzungen.
Gibt es eine Lösung oder einen besseren Weg als meiner ? Vielleicht mit RegEx um zu prüfen ob Zahl oder String ?
Mein Code funktioniert so wie im Beispiel bis auf e$. Auf die e$ Variante könnte ich aber verzichten.
ein Parameter der an eine Procedure übergeben wird, soll wahlweise eine Zahl oder ein String sein
In PB ist das normalerweise ohne nicht vorgesehen. Ich möchte auch keine Adresse übergeben.
Sondern wirklich entweder z.B. 69 oder einen String wie "65+85+84+79" angeben.
In folgendem Code habe ich das mit einem Macro gelöst, ist aber natürlich lange nicht perfekt,
sondern funktioniert nur unter bestimmten Voraussetzungen.
Gibt es eine Lösung oder einen besseren Weg als meiner ? Vielleicht mit RegEx um zu prüfen ob Zahl oder String ?
Mein Code funktioniert so wie im Beispiel bis auf e$. Auf die e$ Variante könnte ich aber verzichten.
Code: Alles auswählen
Procedure.s makechar2(test$)
test$ = ReplaceString(test$, #DOUBLEQUOTE$, "")
panz = CountString(test$, "+")
If panz
For j = 1 To panz + 1
new$ + Chr(Val(StringField(test$, j, "+")))
Next
Else
new$ = Chr(Val(test$)): Debug " ist Zahl"
EndIf
ProcedureReturn new$
EndProcedure
Macro test(gadget, x, y, br, hh, char)
Debug makechar2(#DOUBLEQUOTE$ + char + #DOUBLEQUOTE$)
Debug "-----"
EndMacro
a$ = "$4f+$42+$43"
b$ = "65+66+67"
c$ = "$4f"
d$ = "75"
e$ = "A"
test(gadget, x, y, br, hh, a$)
test(gadget, x, y, br, hh, b$)
test(gadget, x, y, br, hh, c$)
test(gadget, x, y, br, hh, d$)
test(gadget, x, y, br, hh, e$)
test(gadget, x, y, br, hh, "75+76+77")
test(gadget, x, y, br, hh, "$41+$42+$43")
test(gadget, x, y, br, hh, $41)
test(gadget, x, y, br, hh, 69)