|
お疲れ様です。
静的な変数の共有フラグが0の時の動作について質問が1点あります。
共有フラグに0を指定しているので、静的な変数は現在の秀丸エディタ内(※)で有
効ですが、
「メニュ→ファイル→閉じて開く」を行うと、何故か静的な変数が消えます。
(※)現在の秀丸エディタ内
私は同一のプロセスIDと解釈しました。
念のためWindowsのタスクマネージャーで「閉じて開く」の動作を行なったところ、
秀丸エディタのプロセスIDは変化しませんでした。
以下、再現用のマクロと再現方法です。
$Name="MyTest";
#Flag=0;
$Value=getstaticvariable($Name,#Flag);
if($Value==""){
setstaticvariable $Name,"テストです",#Flag;
message "静的な変数が作られていない状態なので、\n静的な変数を作りました";
}else{
message $Value;
}
*再現方法
・秀丸エディタで適当なファイルを開く
・再現用マクロを実行する→「静的な変数が作られていない・・・」というmessage
がポップアップします。(OK)
・「メニュ→ファイル→閉じて開く」から、別のファイルを開きます。
・再現用マクロを実行する→何故か「静的な変数が作られていない・・・」というme
ssageがポップアップします。(NG)
*私が期待する動作
前述の通り、
秀丸エディタのプロセスIDが変わっていないため、静的な変数は消えて欲しくないで
す。
→既存マクロの動作が変わるため対応は難しいですかねぇ・・・
単に、共有フラグを1にすれば良さそうにみえますが、静的な変数に一意の名前を付
る、かつ、漏れなく消す方法(消さないとメモリリークする)が必要で、地味に困っ
ています。
*環境
Windows10 64bit
秀丸エディタ ver 8.98 64bit
よろしくお願いいたします。
|
|