◀マクロトップへ
  • 452 指定された文字列を取得するマクロ
    • 453 RE: 指定された文字列を取得するマクロ
      • 454 Re2: 指定された文字列を取得するマクロ
  • [452] 指定された文字列を取得するマクロ つきた 2008年12月11日 15:31

    プログラムできないため、サイトで探してみましたが良い感じのが見つからなかったので、どなたか教えてください。

    「指定された文字を取得するマクロ」がほしいです。
    やりたい事は、文章の先頭から、あるキーワードが出てくるまで、指定された文字を取得し、文章の最後に改行してペースト。
    という内容です。

    例えば
    指定文字「abc.*」 → 先頭に小文字abcが付いた単語
    キーワード「--END--」

    文章に

    abcde
    ABCDE
    あいうえお
    かきくけこ
    abcABC


    --END--

    と、書いていた場合、abcdeとabcABCを取得し、マクロ実行後、以下のような文章になっている事が期待です。

    abcde
    ABCDE
    あいうえお
    かきくけこ
    abcABC


    --END--
    abcde
    abcABC


    あつかましいかと思いますが、優しい方お願いします><
    • [453] RE: 指定された文字列を取得するマクロ すい 2008年12月13日 03:34

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

      var // 変数確保
      gstr:String; // 見つけた文字列を格納していくための文字列変数 gstr 確保
      sstr,ends:String; // 文字列変数 sstr,ends 確保
      find:String; // 検索結果格納用の文字列変数 find 確保
      CR,LF,CRLF:String; // 改行コード格納用文字列変数を確保
      pt:Integer; // 整数数値変数 pt 確保
      begin //{
      //↓ CR LF 改行コードを代入する
      CRLF := '
      ';
      CR := Copy(CRLF,1,1); // CR改行コードのみ取り出す
      LF := Copy(CRLF,2,1); // LF改行コードのみ取り出す

      sstr := InputBox( '検索文字列入力', '指定文字列を入力してください。(正規表現)' , '' );
      if ( sstr = '' ) then Exit; // 空なら終了

      ends := InputBox( '終端文字列入力', '終端の文字列を入力してください。' , '' );
      if ( ends = '' ) then Exit; // 空なら終了

      gstr := ''; // 「見つけた文字列を格納していく文字列変数」を空にしておく。
      while (True) do begin //{
      // ↓検索文字列と終端文字列を検索
      S_SearchNext( sstr + '|' + ends , $16 ); // 次を検索 $16=0001.0110(2進数)
      // 検索ダイアログを自動的に閉じる
      // 正規表現
      // 英大文字と小文字を区別する
      S_ReDraw(0); // 再描画

      find := S_GetSelectedString(0); // 検索実行後に選択されている文字列(見つけた文字列)を find に取得

      // ↓検索結果文字列 find 中に改行コードが含まれていたら削除する。
      pt := Pos(CR,find); if( pt > 0 ) then find := Copy(find,1,pt-1);
      pt := Pos(LF,find); if( pt > 0 ) then find := Copy(find,1,pt-1);

      // MessageBox( '↓これまでに見つけた文字列' +LF+ '-----' +LF+ gstr + '-----' +LF+ '↓今回見つけた文字列' +LF+ '[' + find + ']' , 'DEBUG' , 0 ); // for DEBUG
      S_Right(0); // カーソル右移動

      if ( find = ends ) then Break; // 見つけたのが終端文字列だった - ループ脱出

      if ( find = '' ) then begin //{
      // 検索結果が空だった == 何も見つからなかった
      // 終端文字列も見つからないまま、最後まで検索完了してしまった場合
      S_AddTail( CRLF + '__end_of_text__' ); // 最後にテキストを追加 - ファイル末尾へ飛んで行き、そこに指定された文字列を書き込む。
      Break; // 検索文字列も終端文字列も無い
      end; //}

      // 検索結果文字列を gstr に追加格納していく。
      gstr := gstr + find + CRLF;
      end; //}

      S_InsText( CRLF + gstr ); // 文字列を書き出す
      end. //}
      • [454] Re2: 指定された文字列を取得するマクロ つきた 2008年12月15日 10:28

        ▼ すいさん
        ぐぐってppa.dllを入手し実行してみたところ、うまくいきました!!!
        ありがとうございます!!!