replaceallfastでyが更新されていない?No.01735
むらやん さん 03/06/16 18:02
 
お疲れ様です。
むらやんです。

4.00βになってからなのですが、Ver.3.19まで
動いていたマクロ関数?の挙動が変わってしまいました。

挙動が違う関数名はreplaseallfastで、現象としては
3.19までは選択エリアの最終行が取得できていたのが、
4.00βでは最後に置き換えした行が取得できます。

まぁ、呼び出す前にyを取得すればいいのですが・・・
これは仕様変更となるのでしょうか?

あと、replaseallfastの動作がとてもfastとは
思えないのろさで動作します。
disabledrawで速度については回避していますが・・・

実行環境は、Win2k Pro SP3、PIII500MHzです
一応念のため、JRE32.DLLを使用しています。

実際は、このようなマクロを実行しています
golinetop;
#startline = y;
beginsel;
inputpos "改修範囲を指定してください。";
if( result == false ){
escape;
endmacro;
}
disabledraw;

$bs = searchbuffer;
#bs = searchoption;
replaceallfast "(/\\*)|(\\*/)", "  ", regular, inselect;
#stopline = y + 3;
moveto 0, #startline;

insert "/*+ 改修 S +++\n";
insert "により削除\n";
moveto 0, #stopline;
insert "+++ 改修 E +*/\n";
setsearch $bs, #bs;
escapeinselect;
escape;
enabledraw;

[ ]
RE:01735 replaceallfastでyが更新されてNo.01757
秀丸担当 さん 03/06/17 15:21
 

>挙動が違う関数名はreplaseallfastで、現象としては
>3.19までは選択エリアの最終行が取得できていたのが、
>4.00βでは最後に置き換えした行が取得できます。

3.19と4.00β2で試してみたのですが、共に動作は同じでした。
replaceallfast後は、最後に置換された行にカーソルがあります。

>あと、replaseallfastの動作がとてもfastとは
>思えないのろさで動作します。
>disabledrawで速度については回避していますが・・・

これはV4.00になってから遅くなったということでしょうか?

[ ]
RE:01735 replaceallfastでyが更新されてNo.01765
ひろ さん 03/06/17 16:50
 
 むらやんさん今日は、ひろです。
> 挙動が違う関数名はreplaseallfastで、現象としては
> 3.19までは選択エリアの最終行が取得できていたのが、
> 4.00βでは最後に置き換えした行が取得できます。
 これは Ver.3.19 の動作を確認していませんが、そうだとしても Ver.3.19
がおかしいのだと思います。y は、範囲選択しているかどうかは関係なく、呼
び出したときのカーソル位置に依存するのが正しいと思います。よって変更さ
れていたとしても、不具合修正では? selendy も有るし。

> あと、replaseallfastの動作がとてもfastとは
> 思えないのろさで動作します。
 これはファイル・サイズや置換個数がどの程度かも記された方がよいと思い
ます。
 ##昔から置換個数が増えると、速度が落ちるという問題が有るのね〜。
 それとは別に、
> replaceallfast "(/\\*)|(\\*/)", "  ", regular, inselect;
は「/*」と「*/」を置換したいんですよね。それなら
replaceallfast "(/\\*|\\*/)", "  ", regular, inselect;
にされては如何でしょう?
 ##こんなことをしても、速度は変わらないかなあ〜。
 もし速度が遅くなったとしたら、ガイドラインなどの縦線関係かもしれません。

[ ]
RE:01757 replaceallfastでyが更新されてNo.01774
むらやん さん 03/06/17 17:43
 
おつかれさまです。
むらやんです。

>3.19と4.00β2で試してみたのですが、共に動作は同じでした。
>replaceallfast後は、最後に置換された行にカーソルがあります。

すいません、この件ですが、私の勘違いでした。

使用していたマクロが古いマクロに置き換わっていて、正常動作していた物と勘違い
していました。
OSを入れ換えたときに、古いBUGありのマクロに戻してしまったようです。
正常動作のマクロでは、やはり置換え前にyを取得していましたm(_ _)m


>>あと、replaseallfastの動作がとてもfastとは
>>思えないのろさで動作します。
>>disabledrawで速度については回避していますが・・・
>これはV4.00になってから遅くなったということでしょうか?

はい、4.00にしてから、輪をかけて遅く感じます。
3.19でもちょっと遅いかなって感じですが、4.00は置き換えられていくのが
見えます。
体感的に、3.19の1.5倍くらいの遅さかな?

描画系が遅くなっているようなので、マクロ実行時は、描画を無効にして対応するこ
とにします。

[ ]
RE:01765 replaceallfastでyが更新されてNo.01784
むらやん さん 03/06/17 19:16
 
ひろさんこんにちは、むらやんです。

> これは Ver.3.19 の動作を確認していませんが、そうだとしても Ver.3.19
>がおかしいのだと思います。y は、範囲選択しているかどうかは関係なく、呼

これに関しては、私の勘違いでした。
すいません。古いファイルに摩り替わっているとは・・・

> これはファイル・サイズや置換個数がどの程度かも記された方がよいと思い
>ます。
> ##昔から置換個数が増えると、速度が落ちるという問題が有るのね〜。

個数はあまり関係ないのですが、ファイルサイズは200行で8kくらいのファイル
です。


>replaceallfast "(/\\*|\\*/)", "  ", regular, inselect;
>にされては如何でしょう?
> ##こんなことをしても、速度は変わらないかなあ〜。

この置換え条件の修正をしてみても、劇的には早くならなかった・・・
速度が上がったのかも微妙です。

なんか、いろいろ試しているうちに、これが普通の速度なんだと
感覚が麻痺し、遅く感じなくなってきてます。(^^:

描画を止めるのが一番の解決方法なのかな?

[ ]
RE:01784 replaceallfastでyが更新されてNo.01785
ひろ さん 03/06/17 19:26
 
 むらやんさん今日は、ひろです。
> 描画を止めるのが一番の解決方法なのかな?
 あとはカラー化関係を全て OFF にすることだと思います。

[ ]