Top 上へ 目次
Ver.10.2について
アンケートで上がってた機能で、マウスオーバーでプレビューを表示するというのを実装してみたんですが、うまいこと行きません。
いやほら、MDIモードで子ウィンドウを並べてたらタブを横断してマウスカーソルのあるタブのファイル名を拾って・・・と考えてたら色々煮詰まってしまいました。
MDIモードで重ねて表示されてたら座標が一緒だと?!・・・とまぁ、どのファイルをマウスが指してるのか分からなくなってきました。
というわけで、ちょっとクールダウンしてから再挑戦しようと思います。
アクティブタブに限定したいなぁ。
というわけで、スゲェ重いわりに地味な改修です。
スクリプトでdo-whileによるループを載せます。
またスクリプトで配列および、連想配列が使えるようにします。
おそらく何のこっちゃ?という方も多いと思いますが、私も使わないと断言できる機能なので気持ちは一緒です。(オイ)
多重ループなんぞ、要らないと思うんですがねぇ・・・。
do-whileは、こんな感じの構文です。
var $i=0
var $j=0
do
$i =+ 1
do
$j =+ 1
if $j == 2
continue
else
break
endif
$i =+ 1
while $j < 3
$i =+ 1
while $i < 5
配列の宣言は、素直にこんな感じです。
var a[10]
→a[0]〜a[9]まで10個変数を確保
var a[hoge]
→hogeを添え字としてa[hoge]を変数として確保
ただ、2点ほど既存の動作が変わり、従来の仕様と互換性が失われます。
配列を使用する場合はループとか分岐とか、添え字の部分は変数にしますよね。
var a[2]
a[1]=あいうえお
a[0]=1
MessageBoxOk=a[a[0]]
こんな感じに。
ピンと来た方は凄いと思います。
As/Rの置換マクロって1回しか判定を行っておらず、同じ置換を繰り返さないのです。
今回の例で、従来方式では「a[1]」というモノが出てくるわけで、本来求めるべき仕様は「あいうえお」と出てきて欲しいわけです。
というわけで、変数や置換マクロは最大10回リトライして置換するように仕様変更します。
なぜ10回かというと
var $a[2]
$a[0]=$a
$a[0]=&[1]
$a[1]=$a
$a[1]=&[0]
messageboxok=$a[$a[0]]
こんな循環する処理を書いちゃうと、置換で無限ループになるからですね。
次に、繰り返し処理のルールが厳しくなります。
for-next、do-whileの複雑な組み合わせが可能になりましたので、最低限のルールを定めないと多重ループを使う場合に混乱してしまうでしょう。
というわけでforやdoが無い状態で、next,while,continue,breakに遭遇したらエラーメッセージを表示して中断するようにします。
無視するという選択肢もあったのですが、今までエラーにならなかったのもマズかった気もしますし、動作が変わりますということで。
正直、若干2名を除いて深く突っ込みが入る気はしないのですが、従来と動作が異なるので紹介しておきます。
コレだけだと、書いたコードの量はともかく、更新履歴的にボリュームが小さいのでもうちょっと色々ぶっこみたいところですね。うーん