検索でエラーとならずに正常終了となるNo.03248
zoom さん 02/07/25 09:58
 
いつもお世話になってますzoomです。

私の作成した以下のマクロ(抜粋)がうまく動きません。
マクロ内容はあるテキストファイルから該当の単語が含まれる行を
抽出して不要な部分は削除するというものです。
テキストファイルサイズが大きいためマクロ実行中に別ウィンドウ
で別作業を行うと、実際は120行あるはずなのに70行しかないように
処理されてしまいます。
(以下のif文のresultがfalseになってしまうようですが...)
これはこういうものなのでしょうか?(マクロの仕様)
じっとそのウィンドウのまま待っておけばいいのですが、その間は
他の作業が出来ません。(特にそれだけなんですけど...)
何かいい対処方法があれば教えてください。

while( #breakflg != 1 )
{
    searchdown $str[#i];
    if( result ){
        golinetop;
        beginsel;
        down;
        cut;
        movetolineno 1,#alllinecnt + #wordcnt+ 1;
        paste;
        down;
        #wordcnt = #wordcnt + 1;
    }else{
          #breakflg = 1;
        break;
    }
}

秀丸 V3.17
OS   NT4.0SP3
です。

宜しくお願いします。

[ ]
RE:03248 検索でエラーとならずに正常終了No.03249
zoom さん 02/07/25 10:15
 
いつもお世話になってますzoomです。

もう少し状況を追記します。
処理テキストファイルは6.6MB(19754行)で最大桁数は428桁です。
秀丸の1行の桁数設定は300行であるため現在の設定を退避して行数を
1000行に変更して処理を行い、処理終了後に元の戻しています。
以下のようにレジストリを変更しています。

(処理前)
openreg "CURRENTUSER","Software\\Hidemaruo\\Hidemaru\\Env";
#pasteafter = getregnum("PasteCursorFix");
writeregnum "PasteCursorFix",1;
#linesize = val( getconfig("w") );
config "w1000";
closereg;

メイン処理(検索処理等)

(処理後)
openreg "CURRENTUSER","Software\\Hidemaruo\\Hidemaru\\Env";
config "w" + str(#linesize);
writeregnum "PasteCursorFix",#pasteafter;
closereg;

また、タイミングによって抽出される行数が変化します。
常に70行というわけではないです。

以上

[ ]
RE:03248 検索でエラーとならずに正常終了No.03256
白雲斎 さん 02/07/25 18:56
 
 白雲斎 と申します。

>マクロ内容はあるテキストファイルから該当の単語が含まれる行を
>抽出して不要な部分は削除するというものです。
>テキストファイルサイズが大きいためマクロ実行中に別ウィンドウ
>で別作業を行うと、

マクロとは直接関係ありませんが、処理中も別作業が行いたいのでしたら、
DOSプロンプトで以下のようにしてはどうでしょう。

対象    : E:\foo\bar.txt (Shift-Jis 限定)
検索語  : 秀丸
結果出力: output.txt

E:\foo>find "秀丸" bar.txt >output.txt

注意:output.txt の頭数行に余計な文が出力されます。(---- BAR.TXT 等)

※ NT4 に "find" コマンドがあるかどうかは、
   find /?
   として確認してください。

[ ]
RE:03256 検索でエラーとならずに正常終了No.03257
zoom さん 02/07/29 11:07
 
お世話になりますzoomです。
情報ありがとうございます。

>E:\foo>find "秀丸" bar.txt >output.txt
>※ NT4 に "find" コマンドがあるかどうかは、
>   find /?
>   として確認してください。
->NT4.0にも"find"コマンドはありました。
  上記コマンドで正常に処理出来ました。
  あまり大きなファイルで時間がかかりそうな場合は
  "find"を代用した方が無難なようです。

  でもマクロ実行中はウィンドウ切替出来ないのかは
  知りたいとこです。
  私のマクロがおかしいだけかもしれませんが...

[ ]