- 作成者投稿
- 2007年12月26日 3:46 pm #5533
zetajr
メンバーVer.7.00日本語版を使用しています。
テキストの中に「ー」と「―」がある場合、Ctrl+Hで出てくるウィンドにて「―」を検索したり一文字分だけ”置換(R)”する場合は特に問題は無いのですが、”すべて置換(A)”を実行すると、「―」だけでなく一緒に「ー」までもが置換されてしまいます。テキスト内に「―」が全くなく、「ー」しか存在していない場合でも同様です。エスケープシーケンスの有効無効を切り替えて見たりもしましたが、動作に変化はありませんでした。
例:
1.用意する変換元文:「―ー―ー―ー―ー―ー―ー―ー―ー―ー―ー」
2.「―」のみ「あ」へ”変換(A)”を10回実行:「あーあーあーあーあーあーあーあーあーあー」<-「―」は文字列から正しく消えている 3.ここで無いはずの「―」を「ぅ」へ"すべて置換(A)":「あぅあぅあぅあぅあぅあぅあぅあぅあぅあぅ」<-本来なら置換箇所は無いはずなのに 個人的な理由で「―」から別文字への変換をするマクロをVer.6まで使っていたのですが、Ver.7になってこのような動きをするようになって非常に困っています。 回避方法はありませんでしょうか?2007年12月26日 5:31 pm #5534Yutaka Emura
キーマスターzetajrさんは書きました:
Ver.7.00日本語版を使用しています。テキストの中に「ー」と「―」がある場合、Ctrl+Hで出てくるウィンドにて「―」を検索したり一文字分だけ”置換(R)”する場合は特に問題は無いのですが、”すべて置換(A)”を実行すると、「―」だけでなく一緒に「ー」までもが置換されてしまいます。テキスト内に「―」が全くなく、「ー」しか存在していない場合でも同様です。エスケープシーケンスの有効無効を切り替えて見たりもしましたが、動作に変化はありませんでした。
例:
1.用意する変換元文:「―ー―ー―ー―ー―ー―ー―ー―ー―ー―ー」
2.「―」のみ「あ」へ”変換(A)”を10回実行:「あーあーあーあーあーあーあーあーあーあー」<-「―」は文字列から正しく消えている
3.ここで無いはずの「―」を「ぅ」へ"すべて置換(A)":「あぅあぅあぅあぅあぅあぅあぅあぅあぅあぅ」<-本来なら置換箇所は無いはずなのに個人的な理由で「―」から別文字への変換をするマクロをVer.6まで使っていたのですが、Ver.7になってこのような動きをするようになって非常に困っています。
回避方法はありませんでしょうか?
こちらでは再現しないのですが、再現できる条件、たとえば、OS の種類など、できるだけ詳しく教えていただけますか?
検索後の文字列を「う」にしないて、「あ」のままにしてもやはり再現しますか? つまり、検索ダイアログで、[すべて置換] ボタンを2回続けて押しても再現しますか?
2007年12月26日 11:27 pm #5535yunoki
メンバー柚木です。
興味があったのでこちらでもテストしてみました。
zetajrさんのご指摘の内容が再現しました。確認した環境
XP MCE SP2
EmEditor Ver 7.00 レジストリを使用——————————————
・例文をドキュメントに貼り付け
・「ー」で検索
・「ー」のみがハイライト(正常)
——————————————
・例文をドキュメントに貼り付け
・「ー」を「1」に置換
・「ー」がひとつ置換される(正常)
・置換ボタンを繰り返す(正常)
——————————————
・例文をドキュメントに貼り付け
・「ー」を「1」にすべて置換
・「ー」と「―」が混同されて同時に置換(不正)
——————————————2007年12月27日 12:41 am #5536Yutaka Emura
キーマスターyunokiさんは書きました:
柚木です。興味があったのでこちらでもテストしてみました。
zetajrさんのご指摘の内容が再現しました。確認した環境
XP MCE SP2
EmEditor Ver 7.00 レジストリを使用——————————————
・例文をドキュメントに貼り付け
・「ー」で検索
・「ー」のみがハイライト(正常)
——————————————
・例文をドキュメントに貼り付け
・「ー」を「1」に置換
・「ー」がひとつ置換される(正常)
・置換ボタンを繰り返す(正常)
——————————————
・例文をドキュメントに貼り付け
・「ー」を「1」にすべて置換
・「ー」と「―」が混同されて同時に置換(不正)
——————————————こちらでは Windows XP SP2 でも再現しないです。おかしいですね。検索する文字列は、カーソル位置にある単語を自動的に取得してしまうので、置換する前に検索する文字列が間違っていないか確認してください。
もしよろしければ、JavaScript か VBScript で再現できるマクロを作成して書いていただけると、確実に再現できると思います。もし可能ならよろしくお願いします。
2007年12月27日 1:10 am #5537yunoki
メンバー大文字と小文字を区別するのチェックをはずしても再現しませんか?
2007年12月27日 1:39 am #5538Yutaka Emura
キーマスターyunokiさんは書きました:
大文字と小文字を区別するのチェックをはずしても再現しませんか?大文字と小文字を区別するのチェックをはずしてあります。置換ダイアログの他のチェックボックスもすべて外してあります。こちらで試したマクロは、次の通りです。まず、新規作成の状態から、
document.selection.Text = “―ー―ー―ー―ー―ー―ー―ー―ー―ー―ー”;
document.selection.Replace(“ー”,”1″,eeFindNext | eeReplaceAll);この結果は、
―1―1―1―1―1―1―1―1―1―1
となります。(正常)
マクロの2行目の部分は、マクロの記録で自動的に記録できるので、もし条件が違う場合は、その行を教えていただければ幸いです。
2007年12月27日 1:41 am #5539zetajr
メンバーWinXPSP2日本語で使っています。Ver.7.00のProをレジスト済みです。日本語変換はIME2002です。
>つまり、検索ダイアログで、[すべて置換] ボタンを2回続けて押しても再現しますか?
再現します。
ただ、追加でいろいろ試したところ、「大文字と小文字を区別する(C)」のチェックボックスがオフになっていると出る現象のようです。ここのチェックをオンにすると、現象が出なくなりました。
Yutakaさんは書きました:
zetajrさんは書きました:
Ver.7.00日本語版を使用しています。テキストの中に「ー」と「―」がある場合、Ctrl+Hで出てくるウィンドにて「―」を検索したり一文字分だけ”置換(R)”する場合は特に問題は無いのですが、”すべて置換(A)”を実行すると、「―」だけでなく一緒に「ー」までもが置換されてしまいます。テキスト内に「―」が全くなく、「ー」しか存在していない場合でも同様です。エスケープシーケンスの有効無効を切り替えて見たりもしましたが、動作に変化はありませんでした。
例:
1.用意する変換元文:「―ー―ー―ー―ー―ー―ー―ー―ー―ー―ー」
2.「―」のみ「あ」へ”変換(A)”を10回実行:「あーあーあーあーあーあーあーあーあーあー」<-「―」は文字列から正しく消えている
3.ここで無いはずの「―」を「ぅ」へ"すべて置換(A)":「あぅあぅあぅあぅあぅあぅあぅあぅあぅあぅ」<-本来なら置換箇所は無いはずなのに個人的な理由で「―」から別文字への変換をするマクロをVer.6まで使っていたのですが、Ver.7になってこのような動きをするようになって非常に困っています。
回避方法はありませんでしょうか?
こちらでは再現しないのですが、再現できる条件、たとえば、OS の種類など、できるだけ詳しく教えていただけますか?
検索後の文字列を「う」にしないて、「あ」のままにしてもやはり再現しますか? つまり、検索ダイアログで、[すべて置換] ボタンを2回続けて押しても再現しますか?
2007年12月27日 3:23 am #5540zetajr
メンバー自分が使っているマクロはこのようなものです。どこに関係があるかわかりませんでしたので、そのままベタで記載いたします。
先ほど大文字小文字を区別するようにすると回避できる、とご報告いたしましたが、下記マクロにおいては、回避できずに誤変換してしまいました。環境については、WinXPSP2+IE7日本語版、IMEはXP標準装備のIME2002のままです。
~~~~~~~~~~~~~~~~~~~~
document.selection.Replace(“―”,”―\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“ソ”,”ソ\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“Ы”,”Ы\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“Ⅸ”,”Ⅸ\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“噂”,”噂\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“浬”,”浬\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“欺”,”欺\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“圭”,”圭\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“構”,”構\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“蚕”,”蚕\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“十”,”十\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“申”,”申\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“曾”,”曾\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“箪”,”箪\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“貼”,”貼\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“能”,”能\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“表”,”表\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“暴”,”暴\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“予”,”予\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“禄”,”禄\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“兔”,”兔\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“喀”,”喀\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“媾”,”媾\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“彌”,”彌\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“拿”,”拿\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“杤”,”杤\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“歃”,”歃\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“濬”,”濬\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“畚”,”畚\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“秉”,”秉\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“綵”,”綵\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“臀”,”臀\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“藹”,”藹\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“觸”,”觸\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“軆”,”軆\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“鐔”,”鐔\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“饅”,”饅\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“鷭”,”鷭\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“偆”,”偆\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
document.selection.Replace(“砡”,”砡\”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);~~~~~~~~~~~~~~~~~~~~
2007年12月27日 7:01 am #5543snow
参加者一番最初に書かれている手順で再現しました。
というか、最初から「―」を「ぅ」に「すべて置換」で全部置き換わりました。
大文字小文字のチェックなし、かつ正規表現のチェックなしで再現しました。
どちらかがチェックされていれば再現しません。2007年12月27日 7:45 am #5544Yutaka Emura
キーマスター問題が発生する方は、OS のバージョンと IE のバージョン、それから Windows の System 32 フォルダにある shlwapi.dll のバージョンとタイムスタンプを教えていただけますか? ファイルのバージョンは、エクスプローラでファイルのプロパティを選択すると詳細タブに表示されます。
2007年12月27日 9:18 am #5548zetajr
メンバー~~~~~~~~~~~~~~~~~~~~
WindowsXP Pro. -> 2600.xpsp_sp2_qfe070227-2300 (Service Pack 2)
IE -> 7.0.5730.11/更新バージョン:0
shlwapi.dll -> 6.00.2900.2995 (xpsp.060913-0019)
~~~~~~~~~~~~~~~~~~~~当方の環境だと上記のようになってました。
2007年12月27日 9:40 am #5549snow
参加者Windows: XP Professional version 2002 Service Pack 2
Internet Explorer: 6.0.2900.2180.xpsp_sp2_gdr.070227-2254
shlwapi.dll: 6.0.2900.3231, 2007/10/11 15:11:14以上です。
2007年12月27日 1:32 pm #5550gen
参加者Yutakaさんは書きました:
yunokiさんは書きました:
大文字と小文字を区別するのチェックをはずしても再現しませんか?大文字と小文字を区別するのチェックをはずしてあります。置換ダイアログの他のチェックボックスもすべて外してあります。こちらで試したマクロは、次の通りです。まず、新規作成の状態から、
document.selection.Text = “―ー―ー―ー―ー―ー―ー―ー―ー―ー―ー”;
document.selection.Replace(“ー”,”1″,eeFindNext | eeReplaceAll);この結果は、
―1―1―1―1―1―1―1―1―1―1
となります。(正常)
マクロの2行目の部分は、マクロの記録で自動的に記録できるので、もし条件が違う場合は、その行を教えていただければ幸いです。
興味があったので私もやってみました。
私のPCでも再現します。
WINDOWS XP PROFESSIONAL
ビルド2600.XPSP.071130-1427 SP3 v3264“―ー―ー―ー―ー―ー―ー―ー―ー―ー―”
を記載されたマクロを実行すると
“111111111111111111111111111111111111111”
となり
なお且つ
Ctl+Zで元に戻すと
“―ー―ー―ー―ー―ー―ー―ー―ー―ー―ー―ー―ー―ー―ー―ー―ー―ー―ー―ー―”
になり、1セット多くなりました。(その前の半角の”1″で多くなっていますが)又”1″を全角にしても同じです。
※置き換えのチェックは全てOFFです。
Ctrl+Hで置き換えを行うと
“1111111111111111111”
になり1セットでした。
又”―”は罫線なのですね”-”全角マイナスでは正しく変換
していました。2007年12月27日 5:24 pm #5551arere
メンバー気になったので試してみました。
試したのは>例:
>1.用意する変換元文:「―ー―ー―ー―ー―ー―ー―ー―ー―ー―ー」
>2.「―」のみ「あ」へ”変換(A)”を10回実行:「あーあーあーあーあーあーあーあーあーあー」3.ここで無いはずの「―」を「ぅ」へ”すべて置換(A)”:「あぅあぅあぅあぅあぅあぅあぅあぅあぅあぅ」<-本来なら置換箇所は無いはずなのにこれです。
まずVista x64では現象を確認できませんでした。
それから普段雑多な目的で使用しているXP SP2(070227-2300, shlwapi.dll: 6.00.2900.3121(xpsp_sp2_qfe.070418-1302))
そしてVMware上でWindows Update(Microsoft Updateにまだ変更していない)の適用以外をしていないほぼクリーン
(何かをインストールする際にはsnapshot機能を使って分岐先でおこなっている) なXP SP2(070227-2300, shlwapi.dll: 6.00.2900.3157()内詳細メモ忘れ)
上で試してみましたが、こちらは両方とも再現しました。
他の方が書かれているように、「大文字と小文字を区別する」「正規表現を使用する」の何れかかまたは両方にチェックが入っていると正常です。
後者の環境は数ヶ月間使っていなかったため最新のパッチが適用されていませんでしたので、適用してみましたがshlwapi.dllが6.00.2900.3231
(xpsp_sp2_qfe.071010-1316)に上がったものの症状は変わりませんでした。2007年12月27日 5:55 pm #5552arere
メンバー同じくVMware上に構築してあるWindows2000SP4英語版で試したところ、こちらでも再現しました。
発生しない条件も含めて同じでした。2007年12月27日 6:06 pm #5553HBpencil
参加者私も気になって試したら、再現したので報告します。
行った操作:
1)7.00で、zetajrさんが最初に報告された手順【NG】
>あぅあぅあぅあぅあぅあぅあぅあぅあぅあぅ
2)7.00で、JavaScriptの手順【NG】
>11111111111111111111
3)EmEditorを 7.00 ⇒ 6.00.4 に入れ替え。
4)6.00.4で、zetajrさんが最初に報告された手順【OK】
>あーあーあーあーあーあーあーあーあーあー
5)6.00.4で、JavaScriptの手順【OK】
>―1―1―1―1―1―1―1―1―1―1
6)EmEditorを 6.00.4 ⇒ 7.00 に戻す。
7)7.00で、zetajrさんが最初に報告された手順【NG】
>あぅあぅあぅあぅあぅあぅあぅあぅあぅあぅ
8)7.00で、JavaScriptの手順【NG】
>11111111111111111111再現した環境の情報:
EmEditor Proofessional Version 7.00
EmEditor Proofessional Version 6.00.4Windows XP Professional version 2002
Build 2600.xpsp_sp2_gdr.070227-2254 : Service Pack 2Internet Explorer 6
Version: 6.0.2900.2180.xpsp_sp2_gdr.070227-2254shlwapi.dll
ファイルバージョン: 6.00.2900.3231 (xpsp_sp2_qfe.071010-1316)
更新日時: 2007年10月11日、15:11:14以上、応援してますので、よろしくお願いします。
2007年12月27日 6:10 pm #5554Yutaka Emura
キーマスターたくさんの方に書いていただいて、大変申し訳ないです。私の方でも再現できる環境がありました。問題は shlwapi.dll に含まれる特有の API を使っているために環境による違いがあるのですが、もう少し調べてみます。
2007年12月27日 6:27 pm #5556Yutaka Emura
キーマスターちなみに、問題のあるマシンでは、IE の検索ダイアログから「―」を検索しようとすると、「―」と「ー」の両方が検索されてしまいます。お試しください。
2007年12月27日 6:44 pm #5557Yutaka Emura
キーマスター続報です。コントロールパネルの地域と言語のオプションで、「現在の形式」が「日本語(日本)」の場合に問題が発生することがわかりました。これが「英語(米国)」だと問題は発生しません。今回は、API の隠れた動作を発見してしまいました。問題となる API は、StrCmpNI という関数です。これは修正します。ご報告ありがとうございました。
2007年12月27日 11:54 pm #5560Yutaka Emura
キーマスター置換のロケール依存問題についてですが、先ほど公開した 7.00.1 RC 1 で修正しました。ご報告どうもありがとうございました。
2007年12月28日 1:39 pm #5569arere
メンバーなるほど。
普通の人って「ー」と「-」を区別しないで使っている事が多いのでIE上やファイル検索の際に同一視するようにしてしまったんじゃないかと推測できますね。
ただMicrosoftに対しては文字集合を許容するAPIと許容しないAPIくらいは明確にして分けるかフラグを付けるかして欲しいところですけど。 - 作成者投稿
- このトピックに返信するにはログインしてください。