· Text 3942 · w8 · inlagg
Som bekant (?) så kan en funktions lokala variabler bara dimensioneras
till konstanta storlekar, vilket ofta innebär att man måste ta till
utrymmet i lokala strängvariabler i överkant, för att vara på den säkra
sidan.
Det här går att kringå, genom att en sträng som dimensioneras till
längden 0, betraktas som ännu ej dimensionerad, vilket innebär att
man längre ned i rutinen kan använda vanlig DIM på variabeln, eller
bara tilldela den ett värde, som åstadkommer en automatisk dimensio-
nering.
Exempel:
DEF FNSinglespace¤(S¤) LOCAL T¤=0,P
T¤=S¤ ! Detta DIMmar T¤ automatiskt till att rymma S¤
WHILE 1
P=INSTR(1,T¤," ")
IF P=0 THEN RETURN T¤
T¤=LEFT¤(T¤,P)+RIGHT¤(T¤,P+2)
WEND
FNEND
På så sätt slpper man gissa sig till maximal längd på S¤ och T¤, utan
att behöva ta till global variabler. (Det går inte att utelämna =xxx
i LOCAL T¤=xxx)
Tyvärr så fungerar inte detta i BASIC-III...