[ 新規に投稿する ]

全角半角大小文字変換マクロ(Ver.4.52)のバグ?No.00725
旧姓山下 さん 25/01/11 21:54 [ コメントを投稿する ]
  いつもお世話になっております。

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

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

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

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

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

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

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

以上、ご報告致します。

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

旧姓山下
[ ]
RE:00725 全角半角大小文字変換マクロ(Ver.4.52)のバグ?No.00726
h-tom さん 25/01/11 23:04 [ コメントを投稿する ]
  h-tom です。

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

以下のURLのような状況ですよ。
https://www.maruo.co.jp/hidesoft/1/x01511_.html#1511
[ ]
RE:00726 全角半角大小文字変換マクロ(Ver.4.52)のバグ?No.00727
秀まるお さん 25/01/12 11:45 [ コメントを投稿する ]
  山紫水明さんからコメントが無い場合は僕の方でテストしてみます。
[ ]
RE:00727 全角半角大小文字変換マクロ(Ver.4.52)のバグ?No.00728
秀まるお さん 25/01/13 10:35 [ コメントを投稿する ]
  テストして再現しました。例えば「123アイウ」みたいな文字列を選択して実行すると、全角のままでないといけないはずの「アイウ」が半角になってしまいました。

410行目付近にある

NoFilterChange:

の直後に

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

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

どうでしょうか。
[ ]
RE:00728 全角半角大小文字変換マクロ(Ver.4.52)のバグ?No.00729
秀まるお さん 25/01/13 11:12 [ コメントを投稿する ]
  あともう1つ、107行目付近にある

    #newendcolumn = selendcolumn;
    #newendline = selendlineno;

は、

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

に直した方がいいです。変換後の範囲選択の終了位置がずれるバグがあって、これで直ると思います。
[ ]
RE:00729 全角半角大小文字変換マクロ(Ver.4.52)のバグ?No.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 全角半角大小文字変換マクロ(Ver.4.52)のバグ?No.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 全角半角大小文字変換マクロ(Ver.4.52)のバグ?No.00732
旧姓山下 さん 25/01/14 10:18 [ コメントを投稿する ]
  秀まるお様

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

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

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

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

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

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

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

[ 新規に投稿する ]