- Bedankjes 0
variabele
- Francke
- Auteur
Lees minder
Lees meer
variabele
24 nov 2021 21:56 - 24 nov 2021 21:59
_VARDEF(_lengte)
_VARIN(_lengte, 6)
_SETDEF(opbreek)
_SETFILL(opbreek, [:Amsterdam:], 6) geeft Amster dam, 2 losse strings zoals verwacht
_SETFILL(opbreek, [:Amsterdam:], _lengte) geeft Amst e rdam, 3 losse strings
_SETSPLICE(opbreek, [:Amsterdam:], 6) geeft Amster dam, 2 losse strings zoals verwacht
_SETSPLICE(opbreek, [:Amsterdam:], _lengte) geeft Ams rdam, 2 losse strings
Waarom geven beide regels code met de variabele _lengte andere uitkomsten?
Hoe krijg ik de regel met de variabele _lengte ook met de goede uitkomst?
PS
de output gaat als volgt:
eerste deel: _SETEXP(opbreek, 1, _SETSTRI)
laatste deel: _SETEXP(opbreek, 0, _SETSTRI)
_SETBEGI(opbreek )
(_NUMB) _SETSTRI
_SETEND
_VARIN(_lengte, 6)
_SETDEF(opbreek)
_SETFILL(opbreek, [:Amsterdam:], 6) geeft Amster dam, 2 losse strings zoals verwacht
_SETFILL(opbreek, [:Amsterdam:], _lengte) geeft Amst e rdam, 3 losse strings
_SETSPLICE(opbreek, [:Amsterdam:], 6) geeft Amster dam, 2 losse strings zoals verwacht
_SETSPLICE(opbreek, [:Amsterdam:], _lengte) geeft Ams rdam, 2 losse strings
Waarom geven beide regels code met de variabele _lengte andere uitkomsten?
Hoe krijg ik de regel met de variabele _lengte ook met de goede uitkomst?
PS
de output gaat als volgt:
eerste deel: _SETEXP(opbreek, 1, _SETSTRI)
laatste deel: _SETEXP(opbreek, 0, _SETSTRI)
_SETBEGI(opbreek )
(_NUMB) _SETSTRI
_SETEND
Laatst bewerkt 24 nov 2021 21:59 door Francke.
- Han Kortekaas
-
- Offline
Re: variabele
24 nov 2021 22:39
Waarom schrijft u [:Amsterdam:] in plaats van "Amsterdam" Amsterdam in uw geval is een functienaam en niet een string.
Om de variabele _lengte uit te lezen moet u _VAROUT(_lengte,"0") gebruiken.
Zie Handleiding sjablonen
Om de variabele _lengte uit te lezen moet u _VAROUT(_lengte,"0") gebruiken.
Zie Handleiding sjablonen
- Francke
- Auteur
Lees minder
Lees meer
- Bedankjes 0
Re: variabele
24 nov 2021 22:59
_SETFILL(opbreek, "Amsterdam", _VAROUT(_lengte,"0"))
geeft een berg foutmeldingen.
Waarschuwing - SETFILL_test.asj [6]: Verwacht ) in plaats van (. Het openingshaakje staat op regel 6 na token _SETFILL
Waarschuwing - SETFILL_test.asj [6]: Verwacht ) in plaats van (. Het openingshaakje staat op regel 6 na token _SETFILL
(_lengte,"0"))
_SETFILL(opbreek, "Amsterdam", [:_VAROUT(_lengte,"0"):])
geeft:
eerste deel: Amsterdam
laatste deel: Amsterdam
(1) Amsterdam
ook niet wat ik bedoelde.
geeft een berg foutmeldingen.
Waarschuwing - SETFILL_test.asj [6]: Verwacht ) in plaats van (. Het openingshaakje staat op regel 6 na token _SETFILL
Waarschuwing - SETFILL_test.asj [6]: Verwacht ) in plaats van (. Het openingshaakje staat op regel 6 na token _SETFILL
(_lengte,"0"))
_SETFILL(opbreek, "Amsterdam", [:_VAROUT(_lengte,"0"):])
geeft:
eerste deel: Amsterdam
laatste deel: Amsterdam
(1) Amsterdam
ook niet wat ik bedoelde.
- Paul Kallenberg
- Offline
Re: variabele
25 nov 2021 00:58 - 25 nov 2021 00:59
Wat er gebeurt is het volgende:
1. _SETFILL(opbreek, "Amsterdam", _lengte). Het derde argument wordt gezien als de separator. De string Amsterdam wordt opgesplitst, waarbij een deel eindigt zodra een van de letters in de separator-string _lengte wordt gevonden. Dat levert in dit voorbeeld dus drie delen op:
Amst ; de letters A, m ,s komen niet voor in _lengte en t komt er wel in voor
e ; e komt voor in _lengte
rdam ; de letters r, d, a en m komen niet voor in _lengte.
2. _SETFILL(opbreek, "Amsterdam", [:_VAROUT(_lengte):]). Het derde argument wordt eerst geëvalueerd en dit levert 6 op. Maar deze 6 wordt niet als een getal, maar als een tekst geïnterpreteerd, met als gevolg dat de separator nu "6" is. Aangezien het teken 6 niet in Amsterdam voorkomt, is het resultaat één string, Amsterdam.
Dit blijkt b.v. hieruit: _SETFILL(opbreek, "Am6terdam", [:_VAROUT(_lengte):]) levert twee strings op: Am6 en terdam.
Kortom, er is niet voorzien in de mogelijkheid om via een variabele een getal als derde argument mee te geven.
Paul
1. _SETFILL(opbreek, "Amsterdam", _lengte). Het derde argument wordt gezien als de separator. De string Amsterdam wordt opgesplitst, waarbij een deel eindigt zodra een van de letters in de separator-string _lengte wordt gevonden. Dat levert in dit voorbeeld dus drie delen op:
Amst ; de letters A, m ,s komen niet voor in _lengte en t komt er wel in voor
e ; e komt voor in _lengte
rdam ; de letters r, d, a en m komen niet voor in _lengte.
2. _SETFILL(opbreek, "Amsterdam", [:_VAROUT(_lengte):]). Het derde argument wordt eerst geëvalueerd en dit levert 6 op. Maar deze 6 wordt niet als een getal, maar als een tekst geïnterpreteerd, met als gevolg dat de separator nu "6" is. Aangezien het teken 6 niet in Amsterdam voorkomt, is het resultaat één string, Amsterdam.
Dit blijkt b.v. hieruit: _SETFILL(opbreek, "Am6terdam", [:_VAROUT(_lengte):]) levert twee strings op: Am6 en terdam.
Kortom, er is niet voorzien in de mogelijkheid om via een variabele een getal als derde argument mee te geven.
Paul
Laatst bewerkt 25 nov 2021 00:59 door Paul Kallenberg.
- Francke
- Auteur
Lees minder
Lees meer
- Bedankjes 0
Re: variabele
25 nov 2021 08:42
Dank voor je antwoord, ik had zo'n vermoeden dat het in die richting gezocht moest worden.
Jammer dat het niet kan, geldt dit ook voor de parameter die met _FUNCBEGI kan worden meegegeven?
Wordt dit euvel te zijner tijd gerepareerd?
Jammer dat het niet kan, geldt dit ook voor de parameter die met _FUNCBEGI kan worden meegegeven?
Wordt dit euvel te zijner tijd gerepareerd?
- Paul Kallenberg
- Offline
Re: variabele
25 nov 2021 09:45
Geldt dit ook voor de parameter die met _FUNCBEGI kan worden meegegeven?
Het onderstaande werkt ook niet zoals je zou willen:
_VARDEF(_lengte)
_VARIN(_lengte, 6)
_SETDEF(opbreek)
mijnOpbreek("Amsterdam",[:_VAROUT(_lengte):])
_SETBEGI(opbreek )
(_NUMB) _SETSTRI
_SETEND
_FUNCBEGI(mijnOpbreek, tekst, n)
_SETFILL(opbreek, tekst, n):.
_FUNCEND
Wordt dit euvel te zijner tijd gerepareerd?
Ik zet het op de lijst.
Paul
Het onderstaande werkt ook niet zoals je zou willen:
_VARDEF(_lengte)
_VARIN(_lengte, 6)
_SETDEF(opbreek)
mijnOpbreek("Amsterdam",[:_VAROUT(_lengte):])
_SETBEGI(opbreek )
(_NUMB) _SETSTRI
_SETEND
_FUNCBEGI(mijnOpbreek, tekst, n)
_SETFILL(opbreek, tekst, n):.
_FUNCEND
Wordt dit euvel te zijner tijd gerepareerd?
Ik zet het op de lijst.
Paul
- Francke
- Auteur
Lees minder
Lees meer
- Bedankjes 0
Re: variabele
25 nov 2021 11:32
Bedankt dat zou mooi.
Uit de handleiding blijkt niet dat _FUNCBEGI meer dan één parameter kan doorgeven, is er een maximum?
Uit de handleiding blijkt niet dat _FUNCBEGI meer dan één parameter kan doorgeven, is er een maximum?
- Han Kortekaas
-
- Offline
Re: variabele
25 nov 2021 12:45
Uw opmerking kan ik niet plaatsen. Een _FUNCBEGI geeft het aantal elementen door afhankelijk wat die functie moet doen.
- Francke
- Auteur
Lees minder
Lees meer
- Bedankjes 0
Re: variabele
25 nov 2021 13:58
Sommige functies zijn strikt genormeerd wat hun parameters betreft, qua aantal en type, zoals dat het geval is bij _SETFILL.
Daarom vroeg ik me af of dit ook het geval is bij _FUNCBEGI voor wat betreft het aantal parameters.
Daarom vroeg ik me af of dit ook het geval is bij _FUNCBEGI voor wat betreft het aantal parameters.
- Paul Kallenberg
- Offline
Re: variabele
25 nov 2021 14:18
Aan het aantal parameters van _FUNCBEGI zijn geen eisen gesteld.
Paul
Paul
- Francke
- Auteur
Lees minder
Lees meer
- Bedankjes 0
Re: variabele
25 nov 2021 14:22
oke, als eea gereapreerd is kunnen strings en getallen door elkaar worden gebruikt?
- Paul Kallenberg
- Offline
Re: variabele
25 nov 2021 14:40
Dat zal in elk geval liggen aan het betreffende sjabloontoken. B.v. in _VARIN(x, n) moet het tweede argument een getal zijn, dat mag geen tekst zijn. _SETFILL is uitzonderlijk in de zin dat daarvan twee vormen met 3 argumenten zijn:
_SETFILL(set, tekst, separator) en _SETFILL(set, tekst, count). Daarbij wil je dat als het derde argument een getal is de tweede vorm wordt gebruikt en anders de eerste vorm. De parser zal dus zo slim gemaakt moeten worden dat hij dat verschil kan maken. Nu kan dat al bij _SETFILL(set, tekst, 6), dat herkent hij als getal, maar als het derde argument tussen [: en :] staat maakt hij er altijd tekst van. Dat zal dus aangepast moeten worden.
Paul
_SETFILL(set, tekst, separator) en _SETFILL(set, tekst, count). Daarbij wil je dat als het derde argument een getal is de tweede vorm wordt gebruikt en anders de eerste vorm. De parser zal dus zo slim gemaakt moeten worden dat hij dat verschil kan maken. Nu kan dat al bij _SETFILL(set, tekst, 6), dat herkent hij als getal, maar als het derde argument tussen [: en :] staat maakt hij er altijd tekst van. Dat zal dus aangepast moeten worden.
Paul