LiveCodeも9.5.1になった。と思ったらある日、スクリプトから呼び出す
Shellスクリプトの返り値がおかしいことに気づいた。
カレンダーのコマンドで帰ってくるリストで、「今日」が強調表示され
るようになってしまった。これはターミナルで試してみると今日の日付
が白抜きで強調表示されている。
put "cal"&space&1&space&2020 into Calend CalHyouji Calendar on CalHyouji Calend put shell(Calend) into Cal set the lockScreen to true put 2 into pos repeat while char pos of line 3 of Cal is space put "." into char pos of line 3 of Cal put pos +3 into pos end repeat get return & "......." put Cal & it & it into Cal repeat with Coo = 0 to 7*6-1 put Coo +11 into bNum put Coo mod 7 into hLoc put Coo div 7 into vLoc get line vLoc +3 of Cal get word hLoc +1 of it if it is "." then get empty end if set name of button bNum to it if it is empty then set disabled of button bNum to true set the fillFore of button bNum to "#E2EBEE"--カードのバックグラウンドと同じ色に set the showPen of button bNum to false else set disabled of button bNum to false set the fillFore of button bNum to 117 set the showPen of button bNum to true end if end repeat end CalHyouji
1行目をボタンなどに記述してCalHyoujiコマンドへ月/年をおくり、カレンダーを
表示させる。ターミナルなどで
cal 1 2020 として、2020年1月のカレンダーを表示させるのと一緒だ。
これまで気づかなかったが、LiveCodeのスクリプトで呼び出すShellコマンドの
仕様がかわったのだろうか。Shellコマンドでは、-hのオプションをつけると
強調表示されなくなるのだが、これまではデフォルトで-hが付いていたものが
つかなくなったということかもしれないと、
put "cal"&space&"-h"&space&1&space&2020 into Calend
として見ると、強調表示されなくなった。
少し前のOSXを乗せたmacで試して見ると、10.10のYosamiteのマシンでは、
従来どおりの挙動なので、どうやらこれはOSXのバージョンによるものの
ようだ。スクリブトからOSのバージョンを取得して切り替える必要がある
と思われるが、全てのOSXを持っている訳ではないので困ったなぁ。
put "sw_vers" into Swver put shell (Swver)into SW get word 2 of line 2 of SW set the itemdelimiter to "." get item 2 of it
取り合えずこんなことをやって見た。
shell にはshellをということで、OSのバージョンを調べて、返り値の2行目の
バージョン表記から二つ目の数字を引っ張り出す。これを調べれば対象のOS
かどうかが分かる。今の所10.10.5では-hのオプションなしで良かったのだが、
気づいたのが10.13.5だったので、10.12あたりからかなぁ。
コメント