検索・置換の文字数制限No.05793
Buckeye さん 04/07/13 10:08
 
検索・置換のコマンドって、256バイト以内といった制限があるのでしょうか。

マクロからでもキーボードからでも、長い文字を検索、置換しようとしたところ、
思ったような動作になりません。どうも、256バイトくらいで切り捨てられてい
るようです。

検索コマンドで長い文字列(半角360文字)を検索→先頭、249文字分だけがヒッ
ト(なんか中途半端な数字)

置換コマンドで長い文字列(半角296文字分の全角・半角混じり文)を長い文字
列(半角360文字)に置換(マクロから実行した)→全体が置換されたが、置換
後の文字列は先頭、256文字分に切り捨てられていた

ざっとヘルプを見たり過去ログの検索をしてみたりしたのですが、この件につい
ての記述を見つけることができませんでした。

秀丸のバージョンは4.10β35です。

Best regards,
Buckeye

[ ]
RE:05793 検索・置換の文字数制限No.05794
Iranoan さん 04/07/13 12:11
 
 Buckeye さん今日は、Iranoan です。
> 検索・置換のコマンドって、256バイト以内といった制限があるのでしょうか。
 確かに制限があるそうです。別会議室ですが、以下にそんな話が載っています。
http://hidemaruo.dip.jp:81/turukame/turukame_1/x06318.html#6415
http://hidemaruo.dip.jp:81/turukame/turukame_2/x07250.html#7252

[ ]
RE:05794 検索・置換の文字数制限No.05795
Buckeye さん 04/07/13 12:34
 
Iranoanさん、

コメント、ありがとうごさいます。

教えていただいたページ、読んできました。バッファの制限ですか……たしかに、
これを修正するのは大変そうですね。でもでも、これはぜひ、なんとかして欲し
いなぁ。

少なくとも置換については、なにがしかの対処が欲しいと思います。バッファの
制限に引っかかって切り落とされるときは、エラーメッセージを出して止まるか、
ここまでで切り落とすけどそれで置換していいかって聞くなどが考えられるでし
ょう。検索は、まあ、切り落として検索されてもかまわないように思いますが、
置換で、ユーザーが知らないうちに切り落とされちゃうのは怖い事態です。

ぜひぜひ、よろしくお願いします>秀丸担当さん

Best regards,
Buckeye

P.S.
自作のマクロには、あぶないときにはメッセージを出す機能を組み込むようにし
ます。

[ ]
RE:05795 検索・置換の文字数制限No.05802
秀丸担当 さん 04/07/15 17:46
 

>少なくとも置換については、なにがしかの対処が欲しいと思います。バッファの
>制限に引っかかって切り落とされるときは、エラーメッセージを出して止まるか、
>ここまでで切り落とすけどそれで置換していいかって聞くなどが考えられるでし
>ょう。検索は、まあ、切り落として検索されてもかまわないように思いますが、
>置換で、ユーザーが知らないうちに切り落とされちゃうのは怖い事態です。

ユーザーが知らないうちに切り落とされることがあるのは、確かにまずいことだ
と思います。
切り落とされることがある場合は、何らかのメッセージを出す方向で検討したい
と思います。
置換のダイアログボックスで手入力でやる場合は、メッセージを出すのは難しい
かもしれません。
バッファの制限を多くするか、制限を無くすのは慎重に考えたいです。

[ ]
RE:05802 検索・置換の文字数制限No.07464
Iranoan さん 05/04/20 12:49
 
 秀丸担当さん今日は、Iranoan です。
> ユーザーが知らないうちに切り落とされることがあるのは、確かにまずいことだ
> と思います。
> 切り落とされることがある場合は、何らかのメッセージを出す方向で検討したい
> と思います。
 この問題についてですが、対策取り込んでいただいたときには、マクロにつ
いては result で解るようにして頂けないでしょうか?
 setsearch/replace なら 0/1 で良いでしょうが、searchdown などのことも
考えると、-1 の方が良いのかもしれませんね。また、同時に正規表現の書式
エラーも同じにして頂ければ幸いです。

[ ]
RE:07464 検索・置換の文字数制限No.07469
秀丸担当 さん 05/04/20 18:25
 

> この問題についてですが、対策取り込んでいただいたときには、マクロにつ
>いては result で解るようにして頂けないでしょうか?
> setsearch/replace なら 0/1 で良いでしょうが、searchdown などのことも
>考えると、-1 の方が良いのかもしれませんね。また、同時に正規表現の書式
>エラーも同じにして頂ければ幸いです。

考えてみたのですが、resultで判断するのは互換性などを考えると難しいです。
setsearchなどはresultの値を変動させないですし、grepは既に-1を使っていま
す。
searchdown後の判断で result == 0 としているマクロと result == 1 としてい
るマクロでも差が出てくると思います。
マクロでは文字数より判断できるので、resultで判断する処理を入れるのであれ
ば、文字数より判断しても同じことだと思います。
文字数制限のことはsearchdownなどのヘルプに書いておくようにしようと思いま
す。

[ ]
RE:07469 検索・置換の文字数制限No.07476
Iranoan さん 05/04/20 22:43
 
 秀丸担当さん今日は、Iranoan です。
> setsearchなどはresultの値を変動させないです
 私は逆に変動するようにして頂ければ良いと思ったのですが、
> grepは既に-1を使っていま
> す。
は、私の案では全く駄目ですね。
> 文字数制限のことはsearchdownなどのヘルプに書いておくようにしようと思いま
> す。
 お願いします。

 しかし、この問題は同対処すればよいんでしょうね。
 エラーが起きたときに直ちに終了すると、動作環境を書き換えるマクロだと、
元に戻されないので、問題でしょうし。

[ ]
RE:07469 検索・置換の文字数制限No.07538
Iranoan さん 05/04/22 19:35
 
 秀丸担当さん今日は、Iranoan です。
> 文字数制限のことはsearchdownなどのヘルプに書いておくようにしようと思いま
> す。
 ヘルプへの追記有り難うございます。
 しかしまた気になることがでてきました(^^;。正規表現の文法エラーはどう
すればよいのでしょう? HmJre.dll を使用しているなら、FindRegular,
FindRegularNoCaseSense 関数を使えば良いと思いますが....。

[ ]
RE:07538 検索・置換の文字数制限No.07558
秀丸担当 さん 05/04/25 11:42
 

> ヘルプへの追記有り難うございます。
> しかしまた気になることがでてきました(^^;。正規表現の文法エラーはどう
>すればよいのでしょう? HmJre.dll を使用しているなら、FindRegular,
>FindRegularNoCaseSense 関数を使えば良いと思いますが....。

正規表現での文法エラーは、マクロのresultなどでは知ることはできません。
HmJre.dllを使っている場合、FindRegularで調べることができるのであれば、そ
れでいいのではないかと思います。

[ ]
RE:07558 検索・置換の文字数制限No.07559
Iranoan さん 05/04/25 12:03
 
 秀丸担当さん今日は、Iranoan です。
> HmJre.dllを使っている場合、FindRegularで調べることができるのであれば、そ
> れでいいのではないかと思います。
 勿論そうなのですが、公開する/指定るマクロの対策をどうしようかと。

[ ]
RE:07559 検索・置換の文字数制限No.07561
Iranoan さん 05/04/25 12:40
 
 今日は、Iranoan です。
> 公開する/指定る
> ^^^^^^^^^^^^^^^
「公開する/している」の間違いです。

[ ]