全角半角大小文字変換マクロ(Ver.4.52)No.00725
旧姓山下 さん 25/01/11 21:54
 
いつもお世話になっております。

山紫水明さん作の「全角半角大小文字変換マクロ Ver.4.52」を見つけて使わせてい
ただいたのですが、バグではないかと思われる挙動がありましたので、報告させてい
ただきます。

なお、山紫水明さんの公式サイトにあるマクロが最新版らしいので、そちらを使いま
した。

バグらしき現象は、カタカナを半角にするような設定はしていなくても、一部のカタ
カナが半角になり、かつ一部のひらがなも半角カタカナになる、というものです。

設定は
・アルファベット大小変換:変換しない
・かなカナ変換:変換しない
・全角に変換:カタカナ
・半角に変換:アルファベットと数字にチェック
としました。全角に変換を全てチェックなしにしてみましたが、結果は変わりません。

アルファベットと数字は設定どおり半角になりました。

ひらがなとカタカナは、半角カタカナになるものと全角ひらがなや全角カタカナのま
まのものがありました。あるところを境目に、前半は全角ひらがなや全角カタカナの
まま、後半は半角カタカナになるという印象です。

境目は「変換が必要な文字の先頭」ではないかと予想しました。すなわち、先の設定
では文書中に初めて現れた全角アルファベットまたは全角数字です。この文字以降の
ひらがなとカタカナが半角カタカナになるのではと思えます。数例試しただけなので
すが。

以上、ご報告致します。

非常に便利そうなマクロなので、修正いただけると助かります。

旧姓山下

[ ]
RE:00725 全角半角大小文字変換マクロ(VeNo.00726
h-tom さん 25/01/11 23:04
 
h-tom です。

>非常に便利そうなマクロなので、修正いただけると助かります。

以下のURLのような状況ですよ。
https://www.maruo.co.jp/hidesoft/1/x01511_.html#1511

[ ]
RE:00726 全角半角大小文字変換マクロ(VeNo.00727
秀まるお さん 25/01/12 11:45
 
山紫水明さんからコメントが無い場合は僕の方でテストしてみます。

[ ]
RE:00727 全角半角大小文字変換マクロ(VeNo.00728
秀まるお さん 25/01/13 10:35
 
テストして再現しました。例えば「123アイウ」みたいな文字列を選択して実行す
ると、全角のままでないといけないはずの「アイウ」が半角になってしまいました。

410行目付近にある

NoFilterChange:

の直後に

if( selecting ) escape; //by 秀まるお

のように、範囲選択を解除する文を入れたら解決すると思います。こちらでテストし
た限りはそれで直りました。

どうでしょうか。

[ ]
RE:00728 全角半角大小文字変換マクロ(VeNo.00729
秀まるお さん 25/01/13 11:12
 
あともう1つ、107行目付近にある

    #newendcolumn = selendcolumn;
    #newendline = selendlineno;

は、

    #newendcolumn = column;  //selendcolumn; //by 秀まるお
    #newendline = lineno;  //selendlineno; //by 秀まるお

に直した方がいいです。変換後の範囲選択の終了位置がずれるバグがあって、これで
直ると思います。

[ ]
RE:00729 全角半角大小文字変換マクロ(VeNo.00730
旧姓山下 さん 25/01/13 18:43
 
h-tom 様、秀まるお様

ご回答ありがとうございました。

> https://www.maruo.co.jp/hidesoft/1/x01511_.html#1511

全然知りませんでした。ウェブサイトの更新が随分止まっているなとは思いましたが。

秀まるお様、修正案、ありがとうございました。

確認ですが、RE:00727 のアドバイスは

NoFilterChange:
if( selecting ) escape; //by 秀まるお
if( #daisho == 1 ) goto HiraKata;   //大小変換なし

となればよろしいわけですね。「直後」が改行なしで後ろに続けるのか、改行して後
ろに続けるのか迷いましたが、どちらでも動いたため、前者を採用しました。

さて、一応希望通りに動きましたこと、ご報告致します。

若干気になったのは、全角の「,」と「.」が、記号を半角にする設定にしていなく
ても、半角になってしまうことです。数字扱いなんでしょうかね。

全角の3桁区切りコンマや小数点を数字と一緒に直してくれると見れば便利なのでし
ょうが、句読点として使われた部分も一斉変換されるのはちょっとやっかいですね。

なお、「、」と「。」は半角にならず、全角のままです。

また、記号を半角にする設定で動かすと、無限ループに入るような気がします。5KB
のテキストファイルを処理したところ、2分以上動き続けたため、強制終了しました。

以上ご報告致します。これらがすぐ直るなら直していただけるとスッキリしますが、
時間がかかるようならこれまでのアドバイスで十分です。ありがとうございました。

旧姓山下

[ ]
RE:00730 全角半角大小文字変換マクロ(VeNo.00731
秀まるお さん 25/01/14 08:38
 
まず、ピリオドとコンマが数字と同じ扱いになってるのは、マクロの方であえてそう
しているようでして、それは修正が可能です。

if( #alphhan ) $search = "A-Za-z,.";
if( #numhan ) $search = $search + "0-9,.";

みたいな2行の文が2カ所(490行目付近と565行目付近)あります。これを

if( #alphhan ) $search = "A-Za-z";
if( #numhan ) $search = $search + "0-9";

のように書き換えれば、期待した動作になります。

それと、遅い件については、マクロで1文字ずつ変換すると遅いのは仕方が無いんで
すが、説明ファイルを見ていただくと、

----------------------------------------------------------------------------
----
【使用法】
このマクロだけで使用できるようになっていますが,高速化や操作感の向上のために
次の
ようなモジュールやDLLを利用できます。
----------------------------------------------------------------------------
----

って書いてあって、半角/全角の変換モジュールを導入することで高速化すると書い
てあります。なので、それを見て変換モジュールをインストールなどすれば解決する
と思います。ダウンロードして解凍して出てきたファイルを秀丸エディタのプログラ
ム用フォルダか、またはマクロ用のフォルダにコピーして、「その他 - 動作環
境...」の「編集 - 変換」の所の変換モジュールに登録してからマクロ実行してみる
と、高速動作すると思います。

[ ]
RE:00731 全角半角大小文字変換マクロ(VeNo.00732
旧姓山下 さん 25/01/14 10:18
 
秀まるお様

素早いご回答、ありがとうございました。

「、」と「。」の問題は、フォントではなくマクロの都合だったんですね。フォント
の問題だと思い込んでマクロのチェックを全くしておりませんでした。失礼しました。

ご指摘通り修正したら、無事に動きました。

高速化については、説明をよく読んでから考えてみます。今のところ記号の変換をし
ようとしなければ、気になる遅さではないためです。

旧姓山下

[ ]
RE:00732 全角半角大小文字変換マクロ(VeNo.00733
秀まるお さん 25/01/15 10:51
 
今さらのコメントになりますが、実は変換モジュールを使わない場合での動作につい
て、マクロの中を少し修正して高速化が可能です。手元で確認して3倍くらいは速く
なりました。

修正箇所がちょっと多いので、修正版はVersion 4.53としてライブラリにアップロー
ドさせていただきます。今日中にアップロード予定とさせていただきます。

ちなみにマクロの修正および修正版のアップロードについては山紫水明さんから許可
を得ています。

[ ]