RE:00092 バグ?No.00787
ENCODINGSHIFTJIS さん 99/10/14 17:34
 
>
>やはり謎ですね。

そのほか、マクロ書きの怪奇現象をまとめたページはありませんか?

while と nexthidemaru の相性がよくない。
//
$basename=basename;// .txt からマクロ起動 h g 作業画面
if(".sgm"!=rightstr($basename,4))
                       {message ".TXT file から起動?";endmacro;}
if(0>findhidemaru("h")){message "作業用画面が表示中?";endmacro;}
if(0>findhidemaru("g")){message "辞書用画面が表示中?";endmacro;}
// nexthiemaru は{}で囲まないと正常動作しないかも < < < 
//   文、関数 ・・・ 種別が違うのか?
while("g"!=basename){nexthidemaru;}selectall;delete;// 辞書初期化
while($basename!=basename){nexthidemaru;}// 画面戻り
//

キーワード、関数などもどんな種類を1行にいくつまで重ねられるかとか、
(改行で区切るポイント)や{}を入れる条件。
1行1文・関数ではあまりにも悲しい。安全だとしても。読みやすさも。

<END/>

[ ]
RE:00787 バグ?No.00788
番頭++ さん 99/10/14 18:10
 
>>やはり謎ですね。
...
>while と nexthidemaru の相性がよくない。

回答にはなりませんが、
nexthidemaru; より basename[#j] のほうが、この場合には便利かも ...

//*5    a1.mac
    #i = hidemarucount; #j = 0;
    while( #j <= #i ){
        $menu1[#j] = basename[#j];
        #j = #j + 1;
    }
    menuarray $menu1, #j-1;
endmacro;

$basename=basename;nexthidemaru;
while($basename!=basename)nexthidemaru;//{} ???
message $basename + "\n" + basename;

[ ]
RE:00788 バグ?No.00789
ENCODINGSHIFTJIS さん 99/10/15 14:48
 
>>>やはり謎ですね。
>...
>>while と nexthidemaru の相性がよくない。
ワカラン、 迷宮入り。
 起きるパターンの簡単な判別ルールさえ解れば安心して書けるのに。
//
        $basename =basename;    nexthidemaru; // 3画面以上で実行する。
while(1){if($basename!=basename)nexthidemaru;else break;}// マクロで
message $basename+"="+basename;            // {} が無いとloop×
//
//        $basename =basename; nexthidemaru; // 3画面以上で実行する。
//  while($basename!=basename){nexthidemaru;}// 不思議だ,画面転換の時間をマ
クロで
//message $basename+"="+basename;            // 取らないとダメか? {} が無い
と×
                                       // それともオーバーラン? 別のところ
で止まる。
//while("g"!=basename){nexthidemaru;}message basename;○
//while("h"!=basename){nexthidemaru;}message basename;

//while("g"!=basename)nexthidemaru;message basename;×
//while("h"!=basename)nexthidemaru;message basename;


[ ]