静的な変数の共有フラグが0の時の動作につNo.09514
ohtorii さん 21/08/05 23:15
 
お疲れ様です。

静的な変数の共有フラグが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


よろしくお願いいたします。

[ ]
RE:09514 静的な変数の共有フラグが0の時No.09515
秀丸担当 さん 21/08/07 09:52
 

静的な変数の共有フラグが0のときは、調べてみたところ、確かにファイルを閉じる
とクリアされるようになっていました。
今から動作を変えると影響が出てしまうかもしれないので、この動作は維持したほう
がよさそうです。
共有フラグの番号を2とすると閉じても維持するモードとなるような、新たなモード
を作ろうかと思います。

[ ]
RE:09515 静的な変数の共有フラグが0の時No.09516
ohtorii さん 21/08/08 11:35
 
お疲れ様です。

ご対応をお待ちしておりますm(__)m

>共有フラグの番号を2とすると閉じても維持するモードとなるような、新たなモード
>を作ろうかと思います。

よろしくお願いいたします。

[ ]