文字数概算の設定変更方法は?No.08049
でるもんたいいじま さん 16/01/19 10:48
 
お世話になっております、でるもんた・いいじまです。

ステータスバーに出る文字数計算機能を重宝しているのですが、
その計算方法をマクロで一括切り替えする方法はないでしょうか?

ツイッター用の原稿と、2ちゃんねるに投稿する原稿を両方とも
秀丸で書いているので、計算方法を必要時にショートカットキー一発で
切り替えたいのです。

この設定は [HKCU\Software\Hidemaruo\Hidemaru\Env]→ExEnv2 に保存される
ようですが、バイナリ値ですからマクロで迂闊にいじるわけにはいきません。

というわけで、例えば下記のようにマクロで設定できればいいなあと
思っているのですが、何かいい方法はないでしょうか?

   setcharcountparam 0x000000; // ツイッター
   setcharcountparam 0x100101; // 2ch
   setcharcountparam -1;       // リセット
   #result = charcountparam;   // 現在の設定を取得

#それにしても、各桁の数値と意味とが直観に反していてわかりにくい(汗)
#16進各桁を 0→数えない、1→1文字、2→2文字、9またはF→0.5文字、
#4と8→タブのために予約、としたほうが分かりやすかったと思うのですが、
#まあ後の祭りですね。

[ ]
RE:08049 文字数概算の設定変更方法は?No.08050
秀丸担当 さん 16/01/19 15:13
 

文字数計算はcharcount関数を使う方法がありますが、ステータスバーなどに表
示されている方法の記憶を変更するための文は確かに無いです。
そういう方法もあったらいいということで参考にさせていただきます。

レジストリは、言われている通りExEnv2のバイナリ情報の一部にあります。
参考までの情報として、これを書き換えるとしたら、writeregbinaryで部分的に
だけ書き換える方法があります。

バイナリは32bitの値の場合、8bitずつが逆の順番に格納されています。
0x40000000のビットは内部用に書き換えがあったということを示していて、常に
ONにします。
0x100101の場合、0x40100101という値で、レジストリは 01 01 10 40 という順
番に入ります。
例えば以下のようにします。

//書き換え
openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
//writeregbinary "ExEnv2", "00000040", 10, 1; //40 00 00 00
writeregbinary "ExEnv2", "01011040", 10, 1; //40 10 01 01
closereg;
envchanged;
endmacro;

//取得
openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
$a=getregbinary("ExEnv2",10,4);
closereg;
message "現在の状態:"+$a;
endmacro;

[ ]
RE:08050 文字数概算の設定変更方法は?No.08051
でるもんたいいじま さん 16/01/19 15:54
 
でるもんた・いいじまです。

> 文字数計算はcharcount関数を使う方法がありますが、ステータスバーなどに
> 表示されている方法の記憶を変更するための文は確かに無いです。
> そういう方法もあったらいいということで参考にさせていただきます。

よろしくお願いします。

> レジストリは、言われている通りExEnv2のバイナリ情報の一部にあります。
> 参考までの情報として、これを書き換えるとしたら、writeregbinaryで
> 部分的にだけ書き換える方法があります。

おお、writeregbinaryというコマンドの存在は知りませんでした。

> 0x40000000のビットは内部用に書き換えがあったということを示していて、
> 常にONにします。
> 0x100101の場合、0x40100101という値で、レジストリは 01 01 10 40 という
> 順番に入ります。
> 例えば以下のようにします。
(以下略)

ありがとうございました。やってみます。

[ ]