◀マクロトップへ
  • 105 文字列の検索結果を検出したい
    • 106 Re: 文字列の検索結果を検出したい
      • 107 Re2: 文字列の検索結果を検出したい
        • 108 Re3: 文字列の検索結果を検出したい
          • 109 Re4: 文字列の検索結果を検出したい
  • [105] 文字列の検索結果を検出したい NEGI 2004年09月09日 19:13

    はじめまして。

    文字列を順次検索して、検索文字列が存在する行を
    全て削除するという処理を行いたいのですが、検索
    終了を検出する方法が分かりません。以下のように
    PPAマクロを作成してみたのですが、「S_SearchNext」
    で検索がHITしたかを検出する方法はないでしょうか?

    var
    str: String;
    word,ignr,re,option: Integer;
    begin
    word := $01; // bit0:単語単位で探す
    ignr := $02; // bit1:英大文字と小文字を区別する
    re := $04; // bit2:正規表現
    option := re;
    str := InputBox('検索文字列入力', '', '');
    S_GoFileTop(0);
    while ( 1 ) do
    begin
    S_SearchNext(str, re);
    // ここでBreakしたい
    S_GoLineTop(0);
    S_BeginSelect(0);
    S_Down_Sel(0);
    S_Delete(0);
    end;
    end
    • [106] Re: 文字列の検索結果を検出したい げんた 2004年09月09日 22:58

      >文字列を順次検索して、検索文字列が存在する行を
      >全て削除するという処理を行いたい
      この目的であれば,正規表現置換で
      置換元: ^.*検索文字列.*\n
      置換先: 空欄
      で「すべて置換」すればお望みの動作になると思います.
      • [107] Re2: 文字列の検索結果を検出したい NEGI 2004年09月10日 21:35

        ご指摘ありがとうございます。
        もう一点質問したいのですが

        > 置換元: ^.*検索文字列.*\n
        > 置換先: 空欄
        > で「すべて置換」すればお望みの動作になると思います.

        を参考にして、上記"検索文字列"の箇所に検索したい
        文字列(data)を

        S_ReplaceAll('^.*data.*\n', '', option);

        というように直書きした場合はうまくいったのですが

        str := InputBox('検索文字列入力', '', '');

        で取得したstrを上記"検索文字列"に代入するには
        どのように記述すればよいのでしょうか?
        • [108] Re3: 文字列の検索結果を検出したい すい 2004年09月11日 06:43

          // TAB=4
          // 実行には PPA.DLL が必須です。sakura.exe と同じフォルダに PPA.DLL を入れておいてください。
          // マクロファイルの拡張子は .PPA でなくてはなりません。

          var // 変数を用意する
          str:String; // 文字列型変数 str を用意
          begin // ここから処理内容
          str := InputBox( '検索文字列行を削除','検索文字列を入力して下さい。' , '' );

          if(str = '') then Exit; // 文字列が空なら何もせずにマクロ終了する。

          S_ReplaceAll( '.*'+str+'.*[\r\n]+' , '', 148); // 148(10進数) == 1001.0100(2進数):選択範囲,ダイアログを自動的に閉じる,正規表現
          S_ReDraw(0); // 再描画
          end;
          • [109] Re4: 文字列の検索結果を検出したい NEGI 2004年09月14日 22:12

            目的通りの動作が行えました。
            ありがとうございます。