refcallの引数をexecmacroに渡すとおかしNo.10085
fzok4234 さん 23/02/17 00:17
 
夜分恐れ入ります。Fzok4234 です。


さて、refcall で呼び出したサブルーチンの文字列引数を execmacro のマクロファ
イル名として
指定すると、この引数の値が空文字列に化けてしまいます。

再現マクロの Main.mac および Sub.mac は以下の通りです。

// Main.mac
debuginfo 2 ;
$subMacroPath   = currentmacrodirectory + @"\Sub.mac";
refcall RefCall $subMacroPath   ;
endmacro    ;

RefCall :
    debuginfo @"Before : " + $$1 + "\U0000000A" ;
    execmacro $$1   ;
    debuginfo @"After : " + $$1 + "\U0000000A"  ;
    return  ;

// Sub.mac
endmacro    ;

上記の Main.mac を実行すると

Before : c:\users\********\desktop\hidemac\bug\20230216\refcall\Sub.mac
After :

と出力されます。RefCall サブルーチンの引数 $$1 が、execmacro に渡す前は正し
い値ですが、
execmacro に渡した後は空文字列として評価されてしまいます。


秀丸エディタは 9.20 Float x64 正式版です。



[ ]
RE:10085 refcallの引数をexecmacroに渡すNo.10086
秀丸担当 さん 23/02/17 09:48
 
バグ情報ありがとうございます。
マクロの通りにして再現できました。
確かにrefcallのサブルーチン内でexecmacroをするとうまくいきませんでした。
次のバージョンで修正させていただきます。

[ ]