変換リストによる連続置換 Ver.3.00の設定No.00270
アルファ さん 14/04/28 17:40
 
初めまして。
マクロライブラリにある『変換リストによる連続置換 Ver.3.00』について質問いた
します。

ちょうどやりたい作業にぴったりのマクロだったので利用させていただこうと思って
います。
試しファイルで動作確認をしてみたところ、
『設定の変更』画面にある『ファイルごとの結果情報を表示する』に入れたチェック
が、再度マクロを開いた際に設定が引き継がれていませんでした。

マクロが終わってもう一度マクロを開くと、チェックが空欄に戻ってしまいます。
マクロフォルダに出来ていたiniファイルを確認しましたが、showfilerep=1になって
います。
しかし、マクロを開いてもチェックは空欄です。

状況を確認しようと各項目にチェックを入れたり外したりを繰り返しながら何度もマ
クロをかけてみると、
次にマクロを開いたときの設定画面が、いじっていない項目のチェック位置が変わっ
たり、
『【変換リスト】フォルダー:』の項目が1に書き換えられてしまったり、どんどん
おかしな状態になってしまいました。
(現在はiniファイルを一旦削除して最初の状態に戻しています)


マクロの勉強をしたことがあるわけではないので見当はずれかもしれませんが、
 GetIni: //設定の読み込み
 WriteIni:
の中の項目が、何かおかしくなっているのでしょうか?

現在の作業環境は
Windows7 64bit、秀丸エディタ64Ver.8.34
UTF-8でファイルを作成しています。

ご確認お願いいたします。

[ ]
RE:00270 変換リストによる連続置換 Ver.3No.00271
山紫水明 さん 14/04/28 21:29
 
 アルファさん,

 バグのご指摘ありがとうございます。

>『設定の変更』画面にある『ファイルごとの結果情報を表示する』に入れたチ
>ェックが、再度マクロを開いた際に設定が引き継がれていませんでした。

 現象確認しました。調べてみたところ,ご指摘のように iniファイルの読み込
みの記述に問題がありました。

 修正したものを
http://homepage2.nifty.com/12sun/sansui.html
にアップしておきましたので,お試しいただければと思います。

                          山紫水明

[ ]
RE:00271 変換リストによる連続置換 Ver.3No.00272
アルファ さん 14/04/30 14:00
 
山紫水明 様

早々にご対応くださり、ありがとうございます!
試してみたところ、『ファイルごとの結果情報を表示する』の設定がちゃんと引き継
がれました。

しかし、残念ながらまだおかしな動きをする点があります。
現在、置換対象を『フォルダ内のファイル全部』に設定しているのですが、
これを『現在のファイル』にチェックし直して『設定の変更』画面にいき、OKで元の
設定画面に戻ってくると
【変換リスト】フォルダー: に指定していたフォルダパスが 1 に書き換えられ
てしまいます。
そのままOKでマクロを実行すると、
 1へのカレントフォルダの移動に失敗しました。
というメッセージが出ます。が、そのままマクロは動き、置換0件で終了します。


最初から『現在のファイル』にチェックされているときや
現在のファイルにチェックし直しても『設定の変更』画面に行かずにそのままマクロ
を実行する分には問題ないようです。
『設定の変更』画面に切り替えたときに書き換えられる様子です。

かなり限定された動作で起こる事象なのでなんですが、ご確認いただけますでしょう
か。

また、せっかくなのでずうずうしくもお伺いしたいのですが、
私が作業する際の変換リストは1000行を超えるため、1ファイルだけを対象にしても
2〜3分は時間がかかってしまいます。
もうちょっと高速化出来ないかと思い、『マクロを高速化する』で調べて出てきたア
イコン化を試してみたく、
 showwindow 2; // 高速化のためアイコン化する
 showwindow 1; // ウインドウを元に戻す
を付け加えようといろいろ試してみたのですが、
やはり根本的にマクロ記述がわかっていないので、期待通りの動きをしてくれません。
置換途中でウインドウが元に戻ってしまったり全くアイコン化されなかったり…
ですが、一部がアイコン化されるだけでも、それなりに時間が短縮されましたので、
ちゃんと組み込めればかなり速くなるのではないかと思います。
うまいこと置換中をアイコン化するには、どの位置に上記の指示を加えたらよいでし
ょうか。
お忙しいとは存じますが、ご教示いただければ幸いです。

[ ]
RE:00272 変換リストによる連続置換 Ver.3No.00273
山紫水明 さん 14/04/30 21:11
 
 アルファさん,

>現在、置換対象を『フォルダ内のファイル全部』に設定しているのですが、こ
>れを『現在のファイル』にチェックし直して『設定の変更』画面にいき、OKで
>元の設定画面に戻ってくると
>【変換リスト】フォルダー: に指定していたフォルダパスが 1 に書き換え
>られてしまいます。

 たしかにそうなることを確認しました。
 とりあえず,その部分については修正をしてみました。β版として同じところ
にアップしておきましたので,ご確認をお願いします。

>また、せっかくなのでずうずうしくもお伺いしたいのですが、私が作業する際
>の変換リストは1000行を超えるため、1ファイルだけを対象にしても2〜3分
>は時間がかかってしまいます。

 1000行を越えるということは,1000回以上の置換を繰り返すことになりますの
で,時間がかかると思いますが,もう少し考えてみます。

                          山紫水明

[ ]
RE:00272 変換リストによる連続置換 Ver.3No.00274
アルビレオ さん 14/04/30 22:04
 
横から失礼します。

そのような膨大な変換リストだと、リストの書き方によっても速度がけっこう違
ってくると思います。
このマクロを実際に使ってみたわけではないので、うまく行くかは保証できませ
んが。


1.いくつかの変換項目をひとつにまとめる

たとえば
 こんにちは → こんにちは!
 こんばんわ → こんばんわ!
となっているものを正規表現を利用して
 こん(にちは|ばんわ) → こん\1!
にするといった感じです。

山紫水明さんも書かれているようにリストの項目数の分だけ置換を繰り返してい
るので、リスト自体を小さくするのは確実に高速化に繋がります。


2.削除あるいは文字数を減らす変換をリストの上の方にする

千以上もあるのならたぶん余分な単語を削ったりする変換もそれなりにあると思
います。
そういうものを先に済ませておくと置換が進むほど対象のテキストが小さくなる
ため、それなりに高速化が見込めます。

サイズを小さくするような置換パターンが少ないとあまり意味はないですが、先
に書いた正規表現を使う工夫よりは簡単に試せます。


これらの工夫によって山紫水明さんがマクロを改良するよりもはるかに効果が大
きい場合もありうるので、千行丸ごと見直しとはいかなくても手をつけやすい範
囲でやってみてはどうでしょうか

[ ]
RE:00272 変換リストによる連続置換 Ver.3No.00275
アルファ さん 14/05/01 17:34
 
山紫水明 様

何度もありがとうございます。
早速試してみましたところ、1に書き換えられること無く動作することを確認いたし
ました。
本当に素早い対応でありがたい限りです。

高速化につきましては、よくばりな要望であることは重々承知です。
もちろん、なにかヒントが思いついたら、で構いません。
今まで1ファイルごとに置換マクロをかけていたので、それに比べれば断然速く作業
が終わりますし、
置換対象が無かったファイルがあるかどうかも確認したいので、レポート機能は重宝
しています。
自分でも手を加えて試しながら使わせていただこうと思います。
読み解いていくだけでもとても勉強になります。


アルビレオ 様

高速化についてご助言ありがとうございます。
ですが、残念ながら私のおこないたい置換は
UTF-8テキストに使われている記号や漢字(S-JISでは表記不可能なもの)を実体参照
に置換する、
というもので、1対1の置換ですのでまとめることが出来ません。
扱うデータも各国言語が入り乱れており、リストは減るどころかまだ増える予定です。
地道にがんばってみようと思います。

[ ]
RE:00275 変換リストによる連続置換 Ver.3No.00276
IKKI さん 14/05/01 17:46
 
アルファさん、こんにちは。ユーザーの IKKI と申します。
横から失礼いたします。

>私のおこないたい置換は
>UTF-8テキストに使われている記号や漢字(S-JISでは表記不可能なもの)を実体参
>照に置換する、
>というもので、1対1の置換ですのでまとめることが出来ません。
>扱うデータも各国言語が入り乱れており、リストは減るどころかまだ増える予定です。

もし作業内容が「SJIS外の文字を文字参照に置換する」だけでしたら、リストを用意
するまでもなく、機械的に置換できるはずです。
拙作マクロ「Escapers2」をご参照ください。
http://hide.maruo.co.jp/lib/macro/escapers22.html
このマクロは秀丸の置換機能を使っていません。代わりに、内部で呼び出している J
Script が実際の置換処理を行っており、非常に高速です。
このマクロ自体は複数ファイルを一括処理したりレポートを書き出したりする機能は
持っていませんが、ご参考になるかと思います。

横から口出し失礼いたしました。

[ ]
RE:00275 変換リストによる連続置換 Ver.3No.00277
山紫水明 さん 14/05/01 20:46
 
 アルファさん,

>高速化につきましては、よくばりな要望であることは重々承知です。

 高速化について,「現在のファイル」については,アイコン化しても「全置換
処理中」のダイアログがチラチラするのは変わりなくてあまり高速化は期待でき
ないようです。
 このダイアログは以前は画面の書き換えを禁止する disabledraw 文でも表示
されていましたが,その後,禁止できるようになっていました。それで本来なら
ば,もっと速くこのマクロにも適用しておくべきところでした。
 今回,それを入れたものを再度アップしておきました。
 ただし上記のように「現在のファイル」だけです。
 フォルダ内置換については元々ステルスモードにしていますので,disabledraw
文もアイコン化も関係ないはずです。他の方法では多分できそうですが,レポー
ト機能との両立は無理のようです。ただオプションとして取り入れるかどうかに
ついては考えてみようと思います。

                          山紫水明

[ ]
RE:00275 変換リストによる連続置換 Ver.3No.00278
アルファ さん 14/05/08 19:56
 
IKKI 様

ご助言ありがとうございます。
さっそくご紹介いただいたマクロを確認してみたのですが、
残念ながら私にはJScriptというのがわからず、難しすぎて活用できそうにありませ
んでした。
せっかくのお申し出でしたが、申し訳ありません。



山紫水明 様

いろいろと改良をしていただき、ありがとうございます。
たしかに、試してみると時間がかかっているのは1ファイル目のみで、
それが終わってからのフォルダ内置換は高速で終わっていました。
レポート機能をあきらめれば、高速化する方法があるのでしょうか?
高速化のほうがより重要なので、オプションの検討をしていただけるととても助かり
ます。

[ ]
RE:00278 変換リストによる連続置換 Ver.3No.00279
アルビレオ さん 14/05/08 21:21
 
アルビレオです。

>さっそくご紹介いただいたマクロを確認してみたのですが、
>残念ながら私にはJScriptというのがわからず、難しすぎて活用できそうにありませ
>んでした。
>せっかくのお申し出でしたが、申し訳ありません。

ちょっと見てみましたが、これは別にJScriptを理解する必要はありませんよ。
機能が豊富なので何をすればいいのか戸惑うのは無理もないと思いますが、
readme.htmlに書かれているようにファイルをマクロ用フォルダに置いてしまえ


1.変換したいテキストを秀丸で開いて全選択
2.Escapers2.macを実行
3.ダイアログの「HTML/XML」タブを選択
4.「文字参照」の<その他の文字>にチェックを入れて「エスケープ」ボタンを
押す

たぶんこれだけだと思います。

複数ファイルを一気に変換したいならひと工夫必要ですが、「複数ファイルに対
して順次Escapers2.macを実行させるマクロ」を作るだけで、Escapers2.macやそ
の関連ファイルには一切手をつける必要はないと思います。

[ ]
RE:00278 nkf で Shift_JIS に変換No.00280
IKKI さん 14/05/09 02:01
 
アルファさん、みなさん、こんばんは。
(もとの話題から外れるかもしれませんが、参考情報です)

ちょっと調べてみたところ、nkf という古典的なソフトが、まさにお望みの機能 (フ
ァイルの文字コードを Shift_JIS に変換し、変換できなかった文字を HTML の数値
文字参照に変換する機能) を持っているようです。
手元で試してみたところ、約42万字の Unicode ファイル (Wikipedia 簡体字中国語
版「清朝」のページをブラウザ上でコピーし、秀丸に5回ペーストして UTF-8 で保存
したもの。1,092キロバイト) を 0.22 秒で変換できました。

私見ですが、こういったコード変換に類する作業をエディタのマクロで行うのは非常
に時間の無駄だと思います。
nkf を使った変換作業の手順を書いておきますので、一度試してみてはいかがでしょ
うか。


[手順1] 以下のマクロを tosjis.mac としてマクロフォルダに保存する。
//----------ここから----------
$command = "\"" + currentmacrodirectory + "\\nkf32.exe\" -x --fb-html --in-p
lace > nul ";
#st = tickcount;
run $command + " *.txt";
message str(tickcount - #st) + " ミリ秒で処理しました";
//----------ここまで----------

[手順2] ベクターから nkf をダウンロードする。
http://www.vector.co.jp/soft/win95/util/se295331.html

[手順3] ダウンロードした書庫の中から nkf32.exe を探し出し、tosjis.mac と同じ
フォルダにコピーする。

[手順4] 変換したいファイル群を1つのフォルダ内に置く。
※すべてのファイルの拡張子が .txt であること。そうでない場合、tosjis.mac の3
行目を適宜修正する。

[手順5] 当該フォルダ内の任意のファイルを秀丸エディタで開く。

[手順6] tosjis.mac をマクロ実行する。
※フォルダ内の全ファイルがいきなり上書きされます。元に戻せません。


なお、手元で試したところでは、一部のアクセント付き欧文文字が消失する場合があ
るようです。
また、アラビア語やデーヴァナーガリーのように複雑な結合文字を多用する言語が意
味的に正しく変換されるかどうかは私にはわかりません。
実戦投入する前に、ご自身の目的に適合するかどうか、十分なテストを行いましょう。

[ ]
RE:00279 変換リストによる連続置換 Ver.3No.00281
IKKI さん 14/05/09 02:19
 
アルビレオさん、フォローありがとうございます。
アルファさん、私の書き込みが言葉足らずだったようで失礼しました。

Escapers2 の使い方はアルビレオさんの書き込みの通りですが、一点だけ補足します
と、
Shift_JIS 外のすべての文字を変換対象とするには、
>4.「文字参照」の<その他の文字>にチェックを入れて「エスケープ」ボタンを押す
ここで「JIS X 0213 拡張漢字」と「<その他の文字>」の両方にチェックを入れる必
要があります。
詳しいことは一応ドキュメントに書いてあります。
http://mobitan.org/hm/escapers2/reference.html#charset:enum

[ ]
RE:00280 nkf で Shift_JIS に変換No.00282
アルビレオ さん 14/05/09 03:41
 
アルビレオです。

大量のテキストを一括処理するならわざわざ「テキストエディタ」を使うこと自
体に無理がありますからね。
ちなみに perl だと以下のような短い記述で「UTF-8をシフトJISに変換&シフト
JISにない文字は数値文字参照に」という処理をしてくれるらしいです。

use strict;
use Encode qw(encode decode :fallbacks);
my $utf8 = '日本語文字列のtest';
# 内部形式に変換
my $internal = decode('utf8', $utf8);
# 十進数値文字参照
my $dref = encode('shiftjis', $internal, FB_HTMLCREF);

引用元: http://www.akatsukinishisu.net/itazuragaki/perl/string_to_numeric_charref.html

あまり perl はいじったことないのですが、ちょっと改造すればコマンドライン
用の一行スクリプトにできそうな気がしますね。

[ ]
RE:00278 変換リストによる連続置換 Ver.3No.00283
山紫水明 さん 14/05/10 21:58
 
 アルファさん,

>レポート機能をあきらめれば、高速化する方法があるのでしょうか?
>高速化のほうがより重要なので、オプションの検討をしていただけるととても
>助かります。

 高速化のオプションを追加してみました。
 通常はレポートは置換個数単位ですが,この場合は行単位になります。1行に
2個以上置換がある場合に数が違ってきます。
 これまで置換数が多いとレポートが画面内におさまらない場合もあったので,
レポートはアウトプット枠に出すようにしてみました。
 レポートなしの選択もできます。
 以下においておきます。
  http://homepage2.nifty.com/12sun/sansui.html

                          山紫水明

[ ]
RE:00283 変換リストによる連続置換 Ver.3No.00284
山紫水明 さん 14/05/14 21:06
 

 若干修正したものを再度アップしました。

                          山紫水明

[ ]
RE:00278 変換リストによる連続置換 Ver.3No.00285
アルファ さん 14/05/23 19:05
 
皆様、いろいろと方法をご提示くださってありがとうございます。
本業のトラブル続きで、すっかりこちらを放置してしまい、大変失礼いたしました。


アルビレオ様、IKKI様
困っている状況説明が省略しすぎで失礼いたしました。
使い方はサイトに記載の説明でおおまかに把握したのですが、
フォルダ内の全ファイルに適用する、という応用が出来そうになかったのです。
単純に、範囲をフォルダ内とするマクロを書いてEscapers2.macを実行、とすると
ダイアログが開いて、タブを選んで変換方法を選ばなければなりませんでした。
それなら、最初からファイルを一つずつ開いて変換マクロをかけるのとたいして変わ
らなくなってしまいます。
決まった変換方法で全てのファイルに変換を繰り返す、とするなら、
Escapers2.macの中から必要な変換方法の記述部分をみつけて、固定できるように書
き加えるか
その部分だけ抜き出してフォルダ内一括変換のマクロに組み込むか、
ということになって、記述内容を理解できないと応用は不可能と思ったのです。
変換自体は大変速かったので、活用出来るようになりたいと思います。

元々秀丸マクロも見よう見まねでやっている程度なので、perlなど他のプログラム
(?)はさっぱりわかりませんし、
作業者にきいてみたところ、表示不可能記号・漢字だけでなく、いくつか通常記号も
変換が必要ということでしたので、ある程度手を加えられる技量が必要なようです。
もうちょっと勉強してみます。

[ ]
RE:00283 変換リストによる連続置換 Ver.3No.00286
アルファ さん 14/05/23 19:06
 
山紫水明 様

高速化をオプション対応していただき、ありがとうございます。
早速サンプルファイルで試してみました。

[結果]
 Ver.302通常
フォルダー:D:\チェック\チェック
ファイル別置換数
20001234567.txt : 106
000.txt : 0
20131408098.txt : 893
20140125683.txt : 33
20140151076.txt : 106
20140176165.txt : 2
-------------------------
検索ファイル数 6
置換ファイル数 5
リストの行数  1279
有効置換回数  44
置 換 総 数   1140
経 過 時 間   141.056 秒


 Ver.303高速
フォルダー:D:\引用チェック\チェック
ファイル別置換数(行単位)
20001234567.txt :  88
20131408098.txt :  745
20140125683.txt :  26
20140151076.txt :  74
20140176165.txt :  1
-------------------------
検索ファイル数 6
置換ファイル数 5
リストの行数  1279
置 換 総 数   1140
経 過 時 間   274.468 秒



 Ver.303β3行数
検索ファイル数: 6
置換ファイル数: 5
リストの行数 : 1279
置換総個数 : 1140
置換総行数 : 934
経 過 時 間 : 275.872 秒


 Ver.303β3個数
検索ファイル数: 6
置換ファイル数: 5
リストの行数 : 1279
置換総個数 : 1140
経 過 時 間 : 187.825 秒


なぜか、高速にチェックをしたほうが時間がかかるという結果でした。
また、Ver.303β3でリストを表示しないでマクロをかけた場合、
手元の時計でざっと計っただけですが、やはり280秒ほどかかっているようです。
もしかして私は何か設定や操作方法を勘違いしているのでしょうか…


[ ]
RE:00286 変換リストによる連続置換 Ver.3No.00287
山紫水明 さん 14/05/25 20:59
 
 アルファさん,

>なぜか、高速にチェックをしたほうが時間がかかるという結果でした。
>また、Ver.303β3でリストを表示しないでマクロをかけた場合、
>手元の時計でざっと計っただけですが、やはり280秒ほどかかっているようです。
>もしかして私は何か設定や操作方法を勘違いしているのでしょうか…

 ファイル数やリストの行数によってどうも期待通りにはならないようです。
 ファイル数が154でリストが10行の場合は次のような結果が出ました。これは
期待通りです。
━━━━━━━━━
検索ファイル数: 154
置換ファイル数: 154
リストの行数 : 10
置換総個数 : 34947
置換総行数 : 30573
経 過 時 間 : 47.986 秒
-----------------
検索ファイル数: 154
置換ファイル数: 154
リストの行数 : 10
置換総個数 : 34869
経 過 時 間 : 182.505 秒
━━━━━━━━━
 しかしリストの行数が多くなると逆になることがあるようです。従来の個数計
算の場合はファイルを一つ一つ開いて,リストの順番に置換していく方法をとっ
ていました。
 新しい方法は 「grepして置換」命令を使うようにしたので,ファイルを次々
に開く必要は無く大幅にスピードアップできると思ったのですが,どうも置換リ
ストの数が多くなると連続して行うgrep置換のスピードが落ちてくるような印象
です。
 高速化はある限定された条件の下でしか行えないようです。今のところ,その
くらいのことしかわかりません。なお,若干の修正をしたものをアップしていま
すがスピードという点では変わりません。

                          山紫水明

[ ]
RE:00287 変換リストによる連続置換 Ver.3No.00288
秀まるお さん 14/05/26 11:45
 
 置換リストによる置換を変換モジュールで、つまり、僕の方でC++言語で作っ
たら速くなるかと思いますけども、そういうのを僕の方で作るってのはどうでし
ょうか。

 単純に、

 検索文字列1,置換先文字列1
 検索文字列2,置換先文字列2

 みたいなリストに従って置換するだけなら簡単に作れそうな気がします。

[ ]
RE:00288 変換リストによる連続置換 Ver.3No.00289
山紫水明 さん 14/05/26 19:53
 
 秀まるおさん,

> 置換リストによる置換を変換モジュールで、つまり、僕の方でC++言語で作っ
>たら速くなるかと思いますけども、そういうのを僕の方で作るってのはどうでし
>ょうか。

 そうしていただけると,劇的に速くなるのではないかと思いますので。作って
いただけるとありがたいです。

> 検索文字列1,置換先文字列1
> 検索文字列2,置換先文字列2
> みたいなリストに従って置換するだけなら簡単に作れそうな気がします。

 正規表現など置換のオプションも指定できたらいいと思います

                          山紫水明

[ ]
RE:00289 変換リストによる連続置換 Ver.3No.00290
秀まるお さん 14/05/28 17:09
 
 変換モジュールを作って今アップロードしました。

   http://hide.maruo.co.jp/lib/hmconv/hmflistreplace100.html

 これで置換は出来ると思うんですが、「grepして置換」相当のことをやる場合
は、ファイルを1つ1つ開いて「すべて選択、変換」と手作業でやるか、または
grep置換を使って、

  検索: .+
  置換: \(0,ListReplace,HmfListReplace,-)
  正規表現: ON

 のような形で置換させるかって形になるかなぁと思います。「.+」で検索して
全置換させると、結構遅いかもしれません。

[ ]
RE:00290 変換リストによる連続置換 Ver.3No.00291
山紫水明 さん 14/05/28 22:25
 
 秀まるおさん,

> 変換モジュールを作って今アップロードしました。

 変換メニューからとマクロの両方で試して見ました。速いです。私の環境で,
1,000行ほどのリストでも,1秒前後で終わりました。

 拙作マクロではリストの作り方もかなり自由にできるようにしていますので,
このモジュールをこのマクロで利用するにはそれなりの制限と工夫をする必要が
あるようですが,実際に必要とされる置換の大部分はこのモジュールで間に合う
と思います。

 result は 1 が返りますが,replaceall のように置換数を出すことはできな
いでしょうね。

                          山紫水明

[ ]
RE:00291 変換リストによる連続置換 Ver.3No.00292
秀まるお さん 14/05/29 09:28
 
>  拙作マクロではリストの作り方もかなり自由にできるようにしていますので,
> このモジュールをこのマクロで利用するにはそれなりの制限と工夫をする必要が
> あるようですが,実際に必要とされる置換の大部分はこのモジュールで間に合う
> と思います。

 山紫水明さんのマクロと互換にもしようと思えば出来たのですが、とりあえず
はそこまでしませんでした。

 とりあえず、検索文字列と置換文字列の区切りが任意に指定できるように直せ
ば互換に出来るかなぁと思いますけど、それだけ対応したらいいでしょうか。

 他にもあれば対応するのはそんなに難しくないと思います。

>  result は 1 が返りますが,replaceall のように置換数を出すことはできな
> いでしょうね。

 実際に置換できた数を何らかの形で返すとしたら、変換モジュール側で
レジストリの特定の場所に書き込んで、マクロからはそこを参照してもらうって
作戦があるかなぁと思います。

 それも、簡単な修正でできると思います。

 そういうのでどうでしょうか。

 あと、正規表現は、ちょっと対応が難しそうだったのでやめてしまいました。

[ ]
RE:00292 変換リストによる連続置換 Ver.3No.00293
秀まるお さん 14/05/29 13:18
 
>  とりあえず、検索文字列と置換文字列の区切りが任意に指定できるように直せ
> ば互換に出来るかなぁと思いますけど、それだけ対応したらいいでしょうか。

 あと、「両端のスペースを除く」も対応します。

[ ]
RE:00293 変換リストによる連続置換 Ver.3No.00298
colder さん 14/05/29 16:04
 
colderです

他にも非互換な所があります。
たとえば
a,b
b,c
c,a
という変換リストで"abc"を変換すると
山紫水明さんのマクロだと"aaa"になるのに対し、変換モジュールでは"bca"になりま
す。(個人的には変換モジュールの動作の方が好きですが)

[ ]
RE:00298 変換リストによる連続置換 Ver.3No.00299
秀まるお さん 14/05/29 16:35
 
> 山紫水明さんのマクロだと"aaa"になるのに対し、変換モジュールでは"bca"になりま
> す。(個人的には変換モジュールの動作の方が好きですが)

 変換した結果に対してもさらに後続の変換を実行するとそうなるのかなぁと思
うので、やろうと思えば出来るかとは思いますけども、なんとなく意図してそう
いう仕様になってる訳でも無いような気がします。

 必要そうでしたらオプション追加で対応って形になるかなぁと思います。

[ ]
RE:00292 変換リストによる連続置換 Ver.3No.00301
山紫水明 さん 14/05/29 20:55
 
 秀まるおさん,

> 山紫水明さんのマクロと互換にもしようと思えば出来たのですが、とりあえ
>ずはそこまでしませんでした。
> とりあえず、検索文字列と置換文字列の区切りが任意に指定できるように直
>せば互換に出来るかなぁと思いますけど、それだけ対応したらいいでしょうか。

 これは対応していただければと思います。

> 他にもあれば対応するのはそんなに難しくないと思います。

 完全互換にしようとすれば,
(1)文字列の区切りが任意に指定できるだけでなく,複数の区切り文字が一つ
      の変換リストの中に混在してもよい。
(2)casesence, nocasesence, word, regular(それぞれ c,nc, w,r と略記で
      きる)のパラメーターが付けられる。一つの変換リストの中に種々の形式
      があってもよい。
(3)フォルダ内置換ができる
というようなことも含まれますが,モジュラーは基本的な作業を迅速に行い,他
の必要があればマクロで適宜処理するということでもいいのではないかと思いま
す。

> 実際に置換できた数を何らかの形で返すとしたら、変換モジュール側でレジ
>ストリの特定の場所に書き込んで、マクロからはそこを参照してもらうって作
>戦があるかなぁと思います。

 それでいいと思います。

> あと、「両端のスペースを除く」も対応します。

 ありがとうございます。

colder さんのご指摘
>> 山紫水明さんのマクロだと"aaa"になるのに対し、変換モジュールでは"bca"
>>になります。(個人的には変換モジュールの動作の方が好きですが)

> 変換した結果に対してもさらに後続の変換を実行するとそうなるのかなぁと
>思うので、やろうと思えば出来るかとは思いますけども、なんとなく意図して
>そういう仕様になってる訳でも無いような気がします。
>必要そうでしたらオプション追加で対応って形になるかなぁと思います。

 変換した結果を再変換するのを避けるために,リストの作り方を工夫する方法
があることを説明書にも書いておきましたが,colder さんの例のような完全に
循環するような変換は避ける方法がありませんでした。モジュールによってそれ
が可能になったわけで,わざわざオプションをつけていただく必要はないと思い
ます。

                          山紫水明

[ ]
RE:00301 変換リストによる連続置換 Ver.3No.00302
秀まるお さん 14/05/30 16:35
 
 いろいろいじってアップロードさせていただきました。

    http://hide.maruo.co.jp/lib/hmconv/hmflistreplace110.html

> (2)casesence, nocasesence, word, regular(それぞれ c,nc, w,r と略記で
>       きる)のパラメーターが付けられる。一つの変換リストの中に種々の形式
>       があってもよい。

 山紫水明さんのマクロにそのような機能があるとは知らずに作り始めてしまい
まして、今からこれも出来るようにってのは、非常に難しいです。ということで、
これは対応不可ってことにさせていただきます。

 とりあえず、山紫水明さんのマクロは、それはそれで非常に高機能なマクロと
してそのまま存続していただいて、僕のは、低機能な代わりに高速なのってこと
で共存共栄するのがいいかなぁと思ったりしました。

 僕の作った変換モジュールを山紫水明さんのマクロから呼び出して使うとなる
と、正規表現の問題その他いろいろ難しそうな気がするので、無理に呼んでいた
だかなくてもいいかなぁという気がします。使う人が、もし高速性が必要なら変
換モジュールでやって、高機能(正規表現など)が必要なら山紫水明さんの
マクロでってことで使い分けていただければいいんじゃないかと思います。

 なんとなく、僕が余計なことをしたせいで山紫水明さんに逆に負担がかかって
しまったら申し訳無いので。

 ということでよろしくお願いします。

[ ]
RE:00302 変換リストによる連続置換 Ver.3No.00303
山紫水明 さん 14/05/30 21:14
 
 秀まるおさん,

> 山紫水明さんのマクロにそのような機能があるとは知らずに作り始めてしま
>いまして、今からこれも出来るようにってのは、非常に難しいです。というこ
>とで、これは対応不可ってことにさせていただきます。

 お作りいただいたモジュールで十分だと思います。

> とりあえず、山紫水明さんのマクロは、それはそれで非常に高機能なマクロ
>としてそのまま存続していただいて、僕のは、低機能な代わりに高速なのって
>ことで共存共栄するのがいいかなぁと思ったりしました。

「高機能」,「低機能」という表現はあまりふさわしくないと思いますが,私の
マクロはいろいろ要望を取り入れているうちに,少しマニアックになりすぎてし
まったかなと思っています。

> 僕の作った変換モジュールを山紫水明さんのマクロから呼び出して使うとな
>ると、正規表現の問題その他いろいろ難しそうな気がするので、無理に呼んで
>いただかなくてもいいかなぁという気がします。

 オプションのない置換の場合には,このモジュールを呼び出せば格段に速くな
りそうなので,活用したいと思います。
 モジュールは使い方がわかれば簡単ですが,秀丸エディタの使用者の中にはマ
クロは何とか利用できるようになったが,モジュールはどうも敷居が高いという
人もいるかもしれません。

                          山紫水明

[ ]
RE:00302 変換リストによる連続置換 Ver.3No.00304
アルファ さん 14/06/10 18:29
 
秀まるお様

秀丸本体へのご対応、ありがとうございます。
変換モジュールというのが何か調べるところから始まる状態だったので、
御礼がずいぶん遅くなってしまい申し訳ありません。
何とか試しに1ファイルを変換してみたところ、一瞬で終わるほど速かったです。
これなら数十ファイルを変換しても、さほど時間はかかりそうもないので、本当に画
期的です。

実際に扱うには、まだわからないところが多いのでいろいろ試し、
また複数ファイルを扱うマクロを考えようと思います。

少し心配なのは、説明にあった
『変換リスト用のファイルはShift-JIS文字コードか、またはユニコード(UTF-16,BO
Mあり)で作成してください。』
の点で、こちらで扱うファイルはUTF-8なのでリストもUTF-8で作成していることです。
一応試しでは山紫水明様のマクロでの結果と同じになりましたので、このまま進める
つもりです。



山紫水明様をはじめ、皆様にはいろいろとご教示いただき、本当にありがとうござい
ました。
とても勉強になり、今回の件以外の作業にも応用できそうです。
高速の変換モジュールと多機能マクロ、両方使わせていただこうと思います。


[ ]
RE:00304 変換リストによる連続置換 Ver.3No.00305
秀まるお さん 14/06/10 23:00
 
> の点で、こちらで扱うファイルはUTF-8なのでリストもUTF-8で作成していることで
>す。
> 一応試しでは山紫水明様のマクロでの結果と同じになりましたので、このまま進める
> つもりです。

 実はUTF-8にも対応してはいるのですが、Shift-JISかUTF-8かを自動判定する
処理が、Shift-JISの方を優先する仕組みになってて、もしかして「Shift-JISと
してもUTF-8としてもどっちと解釈してもアリ」ってファイルがあると、それは
Shift-JISと解釈されるって問題があったりします。

 中に入ってる文字数がそれなりの量があって、たとえば秀丸エディタでその
ファイルを「エンコードの種類=自動判定」で読み込んでうまくUTF-8と解釈さ
れるなら、変換モジュール用のファイルとしても問題なく使えると思います。

[ ]
RE:00305 変換リストによる連続置換 Ver.3No.00306
アルファ さん 14/06/11 17:34
 
秀まるお様

> 中に入ってる文字数がそれなりの量があって、たとえば秀丸エディタでその
>ファイルを「エンコードの種類=自動判定」で読み込んでうまくUTF-8と解釈さ
>れるなら、変換モジュール用のファイルとしても問題なく使えると思います。


なるほど、リストがUTF-8の記号を多用しているから問題なく扱えたのですね。
今回おこないたい変換には適しているようで安心しました。

説明ファイルにあった例文を利用し、何とか変換数カウントも出来そうです。
改めて、本当にありがとうございました。

[ ]
RE:00304 変換リストによる連続置換 Ver.3No.00307
山紫水明 さん 14/06/16 20:01
 

マクロからも変換モジュールが使えるようにしてみました。
http://homepage2.nifty.com/12sun/sansui.html

                        山紫水明

[ ]
RE:00307 変換リストによる連続置換 Ver.3No.00308
アルファ さん 14/06/19 17:05
 
山紫水明 様

さっそく試してみました。
ものすごく速いです。
以前200秒前後だったもので試したところ、2秒で終わりました。
結果レポートも付いているうえに、自分でフォルダ内一括マクロを組み合わせた場合
よりも断然速いです。

ただ、一点だけバグ?を見つけました。
結果情報の表示を詳細表示にして実行すると、
『(変換リスト名)は既に他の秀丸エディタが開いています。構わず開きますか?』
とメッセージが出てきます。
四つの選択肢どれかを選ぶと変換へ進みますがものすごく遅く、200秒ほどかかりま
した。
ご確認いただければ幸いです。

アルファ

[ ]
RE:00308 変換リストによる連続置換 Ver.3No.00309
山紫水明 さん 14/06/19 22:47
 
 アルファさん,

>結果情報の表示を詳細表示にして実行すると、『(変換リスト名)は既に他の
>秀丸エディタが開いています。構わず開きますか?』とメッセージが出てきま
>す。
>四つの選択肢どれかを選ぶと変換へ進みますがものすごく遅く、200秒ほどかか
>りました。

 バグ情報ありがとうございます。
 動作環境のファイルの排他制御の設定によっては不具合が出ることに気づきま
せんでした。
 ただし,ホームページの「履歴と説明」にも書いておきましたが,「詳細表
示」の時はモジュールが使用できませんので高速化はできません。モジュールで
はファイルごとの置換数は出せますが,リストの項目別の置換数は出せないから
です。

 修正版をアップしておきました。

                          山紫水明

[ ]