// 実行には 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. //}