半角/全角変換モジュール 64bi版についてNo.07208
山紫水明 さん 12/06/08 17:27
 

 「変換モジュールライブラリ」にある「半角/全角変換モジュール」(秀丸担
当さん作)を用いた拙作マクロについて,64ビット版で動作しないという報告が
ありました。
 私の環境では64ビット版のテストができないのでお尋ねします。

1.使用している秀丸エディタが32ビット版か64ビット版か,マクロで判定する
 には,どうしたらよいのでしょうか。

2.マクロの
  filter "HanZenConv.hmf" , "HanZenConv" , "0100010";
  という記述方法はこのままでよろしいでしょうか。

3.全角半角変換モジュール登録のチェックをチェックするために,以下のよう
  にしていますが,ここは書きかえる必要があるでしょうか。

openreg "CURRENTUSER","Software\\Hidemaruo\\Hidemaru\\Env\\Filter";
##i = 1;
while( 1 ) {
    $$filter = getregstr("filter" + rightstr("0" + str(##i), 2));
    if( strstr( $$filter, "HanZenConv" ) >= 0 ) {
        ##hanzenconv = 1;
        break;
    }
    if( $$filter == "" ) break;
    ##i = ##i + 1;
}
closereg;
return ##hanzenconv;

              山紫水明

[ ]
RE:07208 半角/全角変換モジュール 64bi版No.07209
santoku さん 12/06/08 18:44
 
“santoku”です。

> 1.使用している秀丸エディタが32ビット版か64ビット版か,マクロで判定する
>  には,どうしたらよいのでしょうか。

if( (platform & 0x80000) ) message "64bit版";
if( (platform & 0x100000) ) message "64bit環境の32bit版";


> 2.マクロの
>   filter "HanZenConv.hmf" , "HanZenConv" , "0100010";
>   という記述方法はこのままでよろしいでしょうか。

モジュールは、64ビット(.hmf64)と32ビット(.hmf)で拡張子が異なるので、
"HanZenConv.hmf" を "HanZenConv" にする必要があるようです。

ただ、古いバージョンで拡張子を省略して動作するかどうかは確認していません。


> 3.全角半角変換モジュール登録のチェックをチェックするために,以下のよう
>   にしていますが,ここは書きかえる必要があるでしょうか。

$s = filter("HanZenConv", "HanZenConv", "0001000", "0");
if( $s == "0" ) message "半角/全角変換モジュール導入済み";
else message "半角/全角変換モジュールは導入されていない";


これでどうでしょうか?

[ ]
RE:07208 半角/全角変換モジュール 64bi版No.07210
h-tom さん 12/06/08 19:25
 

h-tom です。

>3.全角半角変換モジュール登録のチェックをチェックするために,以下のよう
>  にしていますが,ここは書きかえる必要があるでしょうか。
filter文やfilter関数で、変換モジュールを使う場合、秀丸エディタ本体への
登録は不要ですよ。(本体へ登録していなくても、マクロからは使える)
マクロ用DLLのみたいに、変換モジュール自体の存在チェックをすれば、いいの
では?

[ ]
RE:07209 半角/全角変換モジュール 64bi版No.07212
山紫水明 さん 12/06/08 21:03
 
 santokuさん,

>if( (platform & 0x80000) ) message "64bit版";
>if( (platform & 0x100000) ) message "64bit環境の32bit版";

 platform というキーワードはこれまで使用したことがありませんでした。
"64bit環境の32bit版"というややこしいのもあるようですが,これはマクロでは
32bit版として扱っていいのでしょうね。

>モジュールは、64ビット(.hmf64)と32ビット(.hmf)で拡張子が異なるので、
>"HanZenConv.hmf" を "HanZenConv" にする必要があるようです。

 32ビット版では"HanZenConv"ではできないようですので,これは使い分けする必要
があるようです。64ビット版の場合,"HanZenConv.hmf64"ではなくて,"HanZenConv"
なのですね。

>$s = filter("HanZenConv", "HanZenConv", "0001000", "0");
>if( $s == "0" ) message "半角/全角変換モジュール導入済み";
>else message "半角/全角変換モジュールは導入されていない";

 これも32ビット版では
$s = filter("HanZenConv.hmf", "HanZenConv", "0001000", "0");
とする必要があるようです。

 どうもありがとうございました。

                          山紫水明
                          SANSHISUIMEI

[ ]
RE:07210 半角/全角変換モジュール 64bi版No.07213
山紫水明 さん 12/06/08 21:10
 
 h-tomさん,

>filter文やfilter関数で、変換モジュールを使う場合、秀丸エディタ本体への
>登録は不要ですよ。(本体へ登録していなくても、マクロからは使える)
>マクロ用DLLのみたいに、変換モジュール自体の存在チェックをすれば、いいの
>では?

 そうか,それでよかったのですね。どうもありがとうございました。

                          山紫水明
                          SANSHISUIMEI

[ ]
RE:07212 半角/全角変換モジュール 64bi版No.07215
santoku さん 12/06/08 22:15
 
ユーザーの“santoku”です。

>> モジュールは、64ビット(.hmf64)と32ビット(.hmf)で拡張子が異なるので、
>> "HanZenConv.hmf" を "HanZenConv" にする必要があるようです。
>
>  32ビット版では"HanZenConv"ではできないようですので,これは使い分けする必要
> があるようです。64ビット版の場合,"HanZenConv.hmf64"ではなくて,"HanZenConv"
> なのですね。

たぶん、64ビット版であるか否かではなく、秀丸エディタのバージョンによるも
のだと思います。

参照:改版履歴 Ver8.13β8
http://hide.maruo.co.jp/software/hidemaruhist_pre.html

正式な回答を待って判断してください。

[ ]
RE:07215 半角/全角変換モジュール 64bi版No.07216
秀まるお さん 12/06/09 11:26
 
 変換モジュールの「.hmf」の拡張子を省略出来るようになったのは、santoku
さんの話の通り、最近のβ版からになります。V8.13では省略出来ないです。

 置換の時に変換モジュールを通せるようにする仕組みを作った時に、拡張子が
省略出来ないと都合が悪いことが判明して、そういう仕様変更をした所でした。

 ややこしくてすみません。

 32bitか64bitか判定するには、他に、

    if( 0xFFFFFFFF + 1 == 0 ) {
        message "32bit";
    } else {
        message "64bit";
    }

 って方法もあります。

[ ]
RE:07216 半角/全角変換モジュール 64bi版No.07222
山紫水明 さん 12/06/11 16:37
 
 秀まるおさん,

> 変換モジュールの「.hmf」の拡張子を省略出来るようになったのは、santoku
>さんの話の通り、最近のβ版からになります。V8.13では省略出来ないです。
 わかりました。当分は公開するマクロでは,省略しない書き方の方が無難のよ
うです。

> 32bitか64bitか判定するには、他に、
>    if( 0xFFFFFFFF + 1 == 0 ) {
>        message "32bit";
>    } else {
>        message "64bit";
>    }
> って方法もあります。
 これも勉強になりました。

                          山紫水明

[ ]
RE:07215 半角/全角変換モジュール 64bi版No.07223
山紫水明 さん 12/06/11 16:37
 
 santokuさん,

>たぶん、64ビット版であるか否かではなく、秀丸エディタのバージョンによるも
>のだと思います。

 そのとおりでした。ありがとうございました。

                          山紫水明

[ ]