クリップのサイズNo.38710
NISKBSSS さん 21/02/10 13:22
 
こんにちは。
昨日「38702 マクロでファイル間コピー」でお世話になりました。
おかげさまで目的を達成することが出来ましたが
気になったことがありましたので
改めて投稿させていただきました。

ログファイル内の該当行を探して
別ファイルへコピーする処理ですが
具体的には↓のようにいたしました。

-----ここから-----
  setclipboard "";  //  クリップボードの消去
  #ClipNum = 0;  //  クリップ数

  while( true )
  {
    // ログファイルを検索
    searchdown "keyword" , hilight;
    if( !result )
    {
      break;
    }
    selectline 0;
    appendcut;      //  追加カット
    #ClipNum = #ClipNum + 1;

    //  ファイル切替は時間がかかるため
    //  クリップがたまったらファイル出力する
    if( 50 < #ClipNum )
    {
      setactivehidemaru(#newhandle);  //  秀丸ファイルの切替
      disabledraw;          //  画面更新を禁止
      paste;
      setclipboard "";        //  クリップボードの消去
      #ClipNum = 0;

      setactivehidemaru(#myhandle);  //  秀丸ファイルの切替
      disabledraw;          //  画面更新を禁止
    }
  }
-----ここまで-----

気になった点ですが
(1)クリップボードのサイズは?
 ファイル切替に時間を要するようなので
 クリップ50回分をまとめてペーストするようにいたしました。
 クリップ1回で最大5000byte程になりますが
 クリップボードがあふれてしまわないか気になっています。

 クリップボードのサイズはどの程度でしょうか?
 クリップボード履歴のサイズとは
 別と認識しておりますが合ってますでしょうか

【環境】
 秀丸エディタv8.96 統合版32bit
 Windows10 Pro 64bit

よろしくお願いします。

[ ]
RE:38710 クリップのサイズNo.38711
秀丸担当 さん 21/02/10 14:46
 
クリップボードの上限は、クリップボード履歴とは違っていて、特に上限が設定され
ていなくて、メモリ不足が発生するまでになると思います。
その前に、編集可能な最大行数など、[その他]→[動作環境]→[環境]のメモリ関係の
「詳細設定(E)...」にあるようなことのほうが先に問題になると思います。
5000バイトくらいなら、まず問題にはなることはないです。

あと気になったこととして、マクロの例は50回区切りで移しているようですが、最後
に余った50回に満たない部分が移されていないようなので、 if( !result ){break;}
でループ抜けるところ(または抜けた後)でも移したほうがよさそうです。
(マクロの例は全体ではなく一部のようなので、既にそうしていて余計なことでした
らすみません)

[ ]
RE:38711 クリップのサイズNo.38714
NISKBSSS さん 21/02/10 22:43
 
秀丸担当様

ありがとうございました。
上限サイズは十分あるようですので
クリップ回数を増やしてみようと思います。

また、クリップ残り処理についても
ご指摘いただきありがとうございました。



[ ]