[▲前のスレッド]

2008/12/11 (木) 15:31:02  
[452] 指定された文字列を取得するマクロ

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

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

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

文章に

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


--END--

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

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


--END--
abcde
abcABC


あつかましいかと思いますが、優しい方お願いします><
つきた
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; msn Optimized IE build03;JP; msn Optimized IE build03;JP) Sleipnir/2.8.3


2008/12/13 (土) 03:34:13  
[453] RE: 指定された文字列を取得するマクロ

// 実行には 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.        //}
すい
INCM1.23c


2008/12/15 (月) 10:28:48  
[454] Re2: 指定された文字列を取得するマクロ

▼ すいさん
ぐぐってppa.dllを入手し実行してみたところ、うまくいきました!!!
ありがとうございます!!!
つきた
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; msn Optimized IE build03;JP; msn Optimized IE build03;JP) Sleipnir/2.8.3

[▼次のスレッド]
INCM/CMT
Cyclamen v3.81