|
>早速ご確認ありがとうございます。
>""については、確かにそういうことが起こり得ますが、意図的にしないとそうなら
>ないので、あまり気にすることはないかもしれません。
>Hidemaru_SetStaticVariableとHidemaru_GetStaticVariableについてもありがとう
>ございます。
ちょっと追加で調査していたのですが、
Hideamru_SetStaticVariable の返り値がおかしいかもしれません。
(秀丸で宣言している変数のスコープと対応してない印象、やむをえない実装上の結
果なのかどうか判断微妙)
L"" のLは目がチカチカするだけなので抜いて記述します
■マクロ内容が以下のようなものだとして
----------------------------------------------------------------------------
#dll = loaddll( currentmacrodirectory + @"\Dll11.dll" );
$_ = dllfuncstrw(#dll, "abc");
freedll(#dll);
----------------------------------------------------------------------------
■abc関数内で
----------------------------------------------------------------------------
BOOL r = Hideamru_SetStaticVariable("aaa", "", -1 );
----------------------------------------------------------------------------
とするとおそらくFALSEが返ってきます。
■続いて、abc関数内でと書き換えて
----------------------------------------------------------------------------
Hideamru_SetStaticVariable("aaa", "a", -1 );
BOOL r = Hideamru_SetStaticVariable("aaa", "", -1 );
----------------------------------------------------------------------------
さきほどマクロを実行した秀丸エディタプロセスと同じプロセスでマクロを実行する
と今度はTRUEが返ってきます。
(ここまでは、既存のキーが無いところに空値を格納したらfalse、キーがあれば空
文字の代入も当然true扱いは決して不自然ではないのでそうかもねーという挙動)
■ところが、次の挙動で首をかしげることになります。abc関数内を最初の通りに戻
して、
----------------------------------------------------------------------------
BOOL r = Hideamru_SetStaticVariable("aaa", "", -1 );
----------------------------------------------------------------------------
さきほどマクロを実行した秀丸エディタプロセスと同じプロセスでマクロを実行する
と今度もTRUEが返ってきます。
★これは「-1」という意味と合っていません★。
プロセス内のメモリ管理が「マクロが終わった後も続いている」のであれば、この
挙動は妥当と言えますが、
-1だとマクロが終了したらクリアされる、という意味合いだと違和感を感じます。
(まるで、マクロが終了しても静的変数のキー登録だけは残してあって、value相当
だけはクリアしているといった挙動であるかのようなBOOL値が返ってきています)
|
|