;;S: Search.tmc (データ間本文検索マクロ) データ間でも検索できます。絞り込みはしません。 ; 同一データに2つ以上ある場合はデータ内も次々さがします。 ; 大 バさんの検索ジャンプをほとんど再利用させていただいてます。 ; ctrl を押すと検索中でもとりやめることができます。 ; リストボックスのキャンセルは無効です。 ; 最新2000/01/01 最初1999/12/30 khori String FindStr, Dmy, KeyStr, Dmy2 Integer FindStart, FindCur, FindFor, KeyNo, FindIt,f0 GetSelection(FindStr) CmpStr(FindStr,'=','') setint(f0,0) ;既定値 1にすると次のデータ型 JumpIffalse(Findkey) :GetKey IsTomFile JumpIfFalse(TomFileERR) UserGetStr(FindStr, '検索することば') JumpIfFalse(END) CmpStr(FindStr, '=', '') JumpIfTrue(InputErr) :FindKey GetTomCur(FindStart) CmpInt(FindStart, '=', 0) JumpIfFalse(FindKeySkip) TomNextData GetTomCur(FindStart) :FindKeySkip ; CmpInt(0, '<', FindIt) ; JumpIfTrue(FindRepeat) ; ShowMessage('表示データには指定の語がありませんでした', 0) :FindRepeat ; UserListBox(Dmy, FindFor, '前のデータを検索|次のデータを検索||検索語の再入力||終了') UserGetInt(FindFor, '0:前data 1:次data 2:再入力') jumpifFalse(end) call(checkok) setint(f0,findfor); Switch(FindFor, FindPrev, FindNext, FindOther,FindDmy,END) :FindPrev Call(bSearch) CmpInt(0, '<', FindIt) JumpIfFalse(FindPrev) Jump(FindRepeat) :FindNext Call(fSearch) CmpInt(0, '<', FindIt) JumpIfFalse(FindNext) Jump(FindRepeat) :FindDmy Jump(FindRepeat) :FindOther Jump(GetKey) :fSearch setint(FindIt,0); FindString(findstr, 1, 1, 0);下方向検索 JumpIfFalse(fSearchSkip) inc(findit); Return :fSearchSkip tomnextdata ; call(checkcur) return :bSearch setint(FindIt,0); FindString(findstr, 1, 1, 0);下方向検索 JumpIfFalse(bSearchSkip2) inc(findit); Return :bSearchSkip2 tomprevdata ; call(checkcur) Return :checkcur isctrlpressed; jumpiftrue(FindErr); GetTomCur(FindCur) CmpInt(FindStart, '=', FindCur) JumpIfTrue(FindErr) return :checkok RetIfTrue setint(findfor,f0) return :TomFileErr ShowMessage('このマクロは知子ファイル専用です', 0) Jump(END) :InputErr ShowMessage('無効な文字列です', 0) Jump(GetKey) :FindErr ShowMessage('検索した語が見つかりません。別の語で再検索しますか?', 1) JumpIfTrue(GetKey) Jump(END) :END Exit // データ間検索マクロ 指定した文字列と一致する語を持つデータにジャンプし,該当する語の位置にいきます。 大 バさんの -$ FINDKEY.TMC をちょっと変えたものです。一部ラベルも変更しました。 仕様を変更したと点は, 検索はカーソル位置から始めます。データの中では上から下へと検索します。 (1)範囲指定がしてあると,その語をとって検索する。 (2)数値入力ボックスでok だけで前と同じ語を検索する。 (3)数値入力ボックスで   0:前のデータ検索   1:次のデータ検索   2:検索語再入力   単にok ボタン:検索を続行する (4)途中で検索をやめたくなったときは,ctrl キーを押せばよい(ctrl+shift でも止まる,ということはこれはいらないか)。ただし,次のデータに移動するときにだけ有効。 (5)最初のリストボックスで ok の場合,前のデータを捜していきます。