ひまわりユーザー プログラム掲示板 バックアップ
注意
ひまわりのススメ  □ ひまわり本家Home  □ 新着記事  □ 新規投稿  □ SEARCH  □ 参考プログラム集
ツリー表示

MESSAGE フォルダ検索 0.4 /moka (02/02/08(Fri) 05:34) [414]
......MESSAGE バージョンアップ /moka (02/03/11(Mon) 06:56) [592]


親記事 / ▼[ 592 ]
NO.414  フォルダ検索 0.4
□投稿者/ moka -(2002/02/08(Fri) 05:34:44)
□U R L/ http://www.geocities.jp/moka21/teatime/
{
【ソフト名】フォルダ検索 (バージョン 0.4)
【作 成 者】moka (連絡先:moka21@ybb.ne.jp)
   http://www.geocities.jp/moka21/teatime/
【種  別】フリーソフトウェア
【ひまわりのバージョン】ver.1.31
【転  件】可 (転載条件:ご自由に)
【ひまわり本体への梱包】可
【実行時に利用作成するファイル】フォルダ検索.ini
【コメント】
   指定フォルダ以下の全フォルダをリストアップし、
   そのフォルダを対象に検索します。
   
   ver.0.3からリストの書式が変わったので、
   既存のリストは使わずに、再度リストアップしてください。
   また、INIファイル名はソフト名と同じにしました。
}

マニュアル=「■使い方

●左上のメモ部品にフォルダをドラッグ&ドロップしてください。
●フォルダ列挙ボタンを押して少し待ってください。
(下位フォルダが多いと時間がかかります)
●右上のコンボに検索キーワードを入力し、検索してください。
●結果リストをダブルクリックするとフォルダを開きます。

■設定

●列挙したフォルダリストは、
メニューから保存して、次回起動時に読み込めます。
●ツールを設定しておけば、リストで選択してツールで開けます。
●ツールの設定はメニューか、ドラッグ&ドロップで出来ます。」

'----------------------------------------
'   GUI部品設定
'----------------------------------------
母艦は、「フォルダ検索 0.4」
   その、キー押した時は、もし、押されたキー=27ならば、エディタキーワードに、注目。
メモフォルダを、メモとして、作成。
   その、ファイルドロップは、オン。
   その、IMEは、オフ。その、幅は、200
フォルダ列挙ボタンを、ボタンとして、作成。
   その、イベントは、(
      母艦は、「フォルダ検索 - フォルダ列挙中...」
      結果リスト=「」
      リストフォルダの、アイテムは、「」。
      (メモフォルダの、テキスト)を、反復(
         作業リスト=「」
         検索パス=それ
         もし、RIGHT(検索パス、1)=『\』でなければ、
            検索パス=検索パス&『\』
         検索パスが、フォルダか。
         もし、それならば、下位フォルダ列挙。
      )
      結果リストを、ソート。結果リストは、それ。
      リストフォルダの、アイテムは、結果リスト。
      保存フラグ=1
      母艦は、「フォルダ検索 - フォルダ数={要素数(結果リスト)}」
   )

リストフォルダを、リストとして、作成。
   その、幅は、200
   その、高さは、(母艦の、高さ)-(リストフォルダの、Y)-30
   その、クリックした時は、(
      画面クリア。
      文字サイズ=10
      それ=(リストフォルダの、高さ)+(リストフォルダの、Y)
      (10,それ)へ、移動。(リストフォルダの、テキスト)と、表示。
   )
   その、ダブルクリックした時は、(
      '(リストフォルダの、テキスト)を、エクスプローラーで開く。
      「explorer {リストフォルダの、テキスト}」を、起動。
   )
   
エディタキーワードを、コンボとして、作成。
   その、サイズは、(220,10,470,35)
   その、キー押した時は、(
      押されたキーで、条件分岐。
         13の時、検索開始。
         27の時、エディタキーワード=「」
   )   
ペーストボタンを、ボタンとして、作成。
   その、サイズは、(470,10,550,35)
   その、イベントは、(
      クリップボードを、読む。
      「\n」までを、切り取る。トリム。
      エディタキーワードは、それ。
   )
検索ボタンを、ボタンとして、作成。
   その、サイズは、(550,10,630,35)
   その、イベントは、(
      *検索開始
      もし、エディタキーワード=「」ならば、待機。
      母艦は、「フォルダ検索 - フォルダ検索中...」
      リスト検索結果の、アイテムは、「」。
      
      検索キーワード=英数半角変換(エディタキーワード)
      もし、検索オプション=0ならば、検索_そのまま。
      もし、検索オプション=1ならば、(
         検索キーワードを、「 」で、区切る。
         検索キーワードは、それ。
         検索_AND。
      )
      もし、検索オプション=2ならば、(
         検索キーワードを、「 」で、区切る。
         検索キーワードは、それ。
         検索_OR。
      )
      
      それは、(リスト検索結果の、アイテム)。要素数。
      母艦は、「フォルダ検索 - ヒット数=」&
      「{それ}/{要素数(結果リスト)}」
            
      {履歴を重複チェックして追加}
      履歴フラグは、オフ。
      履歴は、(エディタキーワードの、アイテム)。
      履歴を、反復(
         もし、それが、(エディタキーワードの、テキスト)ならば(
            履歴の,(回数-1)行目を,行削除。
            履歴フラグは、オン。抜ける。
         )
      )
      もし、履歴フラグならば、履歴は、それ。
      履歴=(エディタキーワードの、テキスト)&「\n」&履歴。
      エディタキーワードの、アイテムは、履歴。
      待機。
   )
リスト検索結果を、リストとして、作成。
   その、サイズは、(220,45,630,335)
   その、ダブルクリックした時は、(
      '(リスト検索結果の、テキスト)を、エクスプローラーで開く。
      「explorer {リスト検索結果の、テキスト}」を、起動。

   )
エディタツールパスを、エディタとして、作成。
   その、ファイルドロップは、オン。その、IMEは、オフ。
   その、サイズは、(220,345,530,370)
ツール開くボタンを、ボタンとして、作成。
   その、サイズは、(530,345,630,370)
   その、イベントは、(
      もし、エディタツールパス=「」ならば、待機。
      もし、リスト検索結果=-1ならば、待機。
      (エディタツールパス&「 」&(リスト検索結果の、テキスト))を、起動。
   )
   
'----------------------------------------
'   メニュー設定
'----------------------------------------
ファイルメニューを、メニュー作成。
   ファイルメニューに、リスト開くメニューを、メニュー追加。   
      その、イベントは、(
         「リストファイル|*.dat;*.lst|全て|*.*」の、読み込みファイル選択。
         もし、それ=「」ならば、待機。
         ファイル名=それ
         ファイル内容に、ファイル名を、読む。
         ファイル内容から、1番目の、段落を切り出す。
         「\n\n」を、「\n」に、置換。
         メモフォルダは、それ。
         ファイル内容から、2番目の、段落を切り出す。
         リストフォルダの、アイテムは、それ。
         結果リスト=それ。
         母艦=「フォルダ検索 - フォルダ数={要素数(結果リスト)}」
      )
   ファイルメニューに、リスト保存メニューを、メニュー追加。
      その、イベントは、(
         「リストファイル|*.dat;*.lst|全て|*.*」の、書き込みファイル選択。
         もし、それ=「」ならば、待機。
         ファイル名=それ
         それは、メモフォルダ&「\n」&(リストフォルダの、アイテム)。
         ファイル名へ、書く。
         保存フラグ=0
      )
設定メニューを、メニュー作成。
   設定メニューに、起動時にIMEオンメニューを、メニュー追加。
      その、イベントは、設定メニューイベント。
   設定メニューに、起動時に前回のリストファイルを読むメニューを、メニュー追加。
      その、イベントは、設定メニューイベント。
   設定メニューに、検索オプションメニューを、メニュー追加。
      検索オプションメニューに、検索オプション0メニューを、メニュー追加。
         その、テキストは、「そのまま」。その、値は、1。
         その、イベントは、検索オプションメニューイベント。
      検索オプションメニューに、検索オプション1メニューを、メニュー追加。
         その、テキストは、「AND」
         その、イベントは、検索オプションメニューイベント。
      検索オプションメニューに、検索オプション2メニューを、メニュー追加。
         その、テキストは、「OR」
         その、イベントは、検索オプションメニューイベント。
   設定メニューに、ツールのパスメニューを、メニュー追加。
      その、イベントは、(
         一時フォルダは、作業フォルダ。
         もし、エディタツールパス=「」でなければ(
            エディタツールパスから,パスを切り出す。
            作業フォルダは、それ。   
         )
         「exe」の、読込ファイル選択。
         もし、それが、「」でなければ、エディタツールパスは、それ。
         作業フォルダは、一時フォルダ。
      )
   設定メニューに、履歴をクリアメニューを、メニュー追加。
      その、イベントは、(
         履歴=「」。エディタキーワードの、アイテムは、「」。
      )
   設定メニューに、区切り線メニューを、メニュー追加。その、テキストは、「-」
   設定メニューに、アンインストールメニューを、メニュー追加。
      その、イベントは、(
         「{INIパス} を削除しますか?」と、二択。
         もし、それ=いいえならば、待機。
         INIパスを、ファイル削除。
      )
   
ヘルプメニューを、メニュー作成。
   ヘルプメニューに、マニュアルメニューを、メニュー追加。   
      その、イベントは、マニュアルを、言う。
   ヘルプメニューに、区切り線2メニューを、メニュー追加。その、テキストは、「-」
   ヘルプメニューに、ひまわりするメニューを、メニュー追加。   
      その、イベントは、(
         デバッグ文の、メモ記入。
         もし、それ=「」ならば、待機。
         デバッグ文=それ。ひまわりする。
      )
   ヘルプメニューに、取り込むメニューを、メニュー追加。
      その、イベントは、(
         '一時フォルダは、作業フォルダ。
         「hmw|*.hmw|txt|*.txt|*|*.*」の、読込ファイル選択。
         もし、それ=「」ならば、待機。
         '一時フォルダに、作業フォルダ変更。
         それを、取り込む。
      )

*起動処理
   保存フラグ=0。検索オプション=0。
   デバッグ文=「」。履歴=「」。
   終了処理に、終了処理設定。
   母艦の、変更した時は、母艦リサイズ。

   INIパス=母艦のパス&「フォルダ検索.ini」
   INIパスが、存在するか。
   もし、それならば、(
      INIパスから、フォームの位置復元。
      INIパスの、INIファイル開く。
      
      「DirSearch」の、「Word」を、INIファイル読む。
      「;」で、区切る。
      エディタキーワードの、アイテムは、それ。
      
      「DirSearch」の、「Tool」を、INIファイル読む。
      エディタツールパスは、それ。

      「DirSearch」の、「IME」を、INIファイル読む。
      エディタキーワードの、IMEは、それ。
      起動時にIMEオンメニューの、値は、それ。

      「DirSearch」の、「Search」を、INIファイル読む。
      もし、それ=「」ならば、それ=0
      検索オプション=それ
      検索オプション0メニューの、値は、0。
      「検索オプション{それ}メニューの、値は、1。」を、ひまわりする。
      
      「DirSearch」の、「Load」を、INIファイル読む。
      起動時に前回のリストファイルを読むメニューの、値は、それ。
      「DirSearch」の、「LoadPath」を、INIファイル読む。
      ファイル名=それ
      もし、(起動時に前回のリストファイルを読むメニューの、値)かつ(ファイル名<>「」)ならば、(
         ファイル内容に、ファイル名を、読む。
         ファイル内容から、1番目の、段落を切り出す。
         「\n\n」を、「\n」に、置換。
         メモフォルダは、それ。
         ファイル内容から、2番目の、段落を切り出す。
         リストフォルダの、アイテムは、それ。
         結果リストは、それ。
         母艦は、「フォルダ検索 - フォルダ数={要素数(結果リスト)}」
      )
      
      INIファイル閉じる。
   )
   
   エディタキーワードに、注目。
待機。

*終了処理
   もし、保存フラグならば、(
      「リストを保存しますか?」と、三択。
      もし、それが、キャンセルならば、(終了処理に、終了処理設定。待機。)
      'もし、それが、いいえならば、終わる。
      もし、それが、はいならば、(
         「リストファイル|*.dat;*.lst|全て|*.*」の、書き込みファイル選択。
         もし、それ=「」ならば、(終了処理に、終了処理設定。待機。)
         ファイル名=それ
         それは、メモフォルダ&「\n」&(リストフォルダの、アイテム)。
         ファイル名へ、書く。
      )
   )
   
   INIパスが、存在するか。
   もし、それ=0ならば、(
      「{INIパス} に各種設定を保存しますか?」と、二択。
      もし、それが、いいえならば、終わる。
   )
   もし、それ=1ならば、(
      母艦元のサイズ。
      INIパスへ、フォームの位置記録。
      INIパスの、INIファイル開く。
      
      それは、履歴。履歴=「」
      反復(
         もし、回数<=5ならば、履歴=「{履歴}{それ}\n」
         違えば、抜ける。
      )
      それは、履歴。「\n」を、「;」に、置換。
      「DirSearch」の、「Word」に、INIファイル書く。
      
      それは、エディタツールパス。
      「DirSearch」の、「Tool」に、INIファイル書く。

      それは、起動時にIMEオンメニューの、値。
      「DirSearch」の、「IME」に、INIファイル書く。
      
      それは、検索オプション。
      「DirSearch」の、「Search」に、INIファイル書く。
      
      それは、起動時に前回のリストファイルを読むメニューの、値。
      「DirSearch」の、「Load」に、INIファイル書く。
      それ=ファイル名
      「DirSearch」の、「LoadPath」に、INIファイル書く。
      
      INIファイル閉じる。
   )
   
   終わる。

*母艦リサイズ
   検索ボタンの、Xは、(母艦の、幅)-(検索ボタンの、幅)-10
   ペーストボタンの、Xは、(検索ボタンの、X)-(ペーストボタンの、幅)
   エディタキーワードの、幅は、(ペーストボタンの、X)-(エディタキーワードの、X)
   
   エディタツールパスの、Yは、(母艦の、高さ)-(エディタツールパスの、高さ)-15
   ツール開くボタンの、Yは、エディタツールパスの、Y。
   ツール開くボタンの、Xは、(母艦の、幅)-(ツール開くボタンの、幅)-10
   エディタツールパスの、幅は、(ツール開くボタンの、X)-(エディタツールパスの、X)
   
   リスト検索結果の、幅は、(母艦の、幅)-(リスト検索結果の、X)-10
   リスト検索結果の、高さは、(エディタツールパスの、Y)-(リスト検索結果の、Y)-10
   
   リストフォルダの、高さは、(母艦の、高さ)-(リストフォルダの、Y)-15
   戻る。

*下位フォルダ列挙
   検索パスの、フォルダ列挙。
   結果リスト=結果リスト&検索パス&「\n」
   
   一時リスト=それ
   検索パスから、パスを切り出す。
   作業パス=それ。
   一時リストを、反復(作業リスト=作業パス&それ&「\\」&「\n」&作業リスト)
   
   もし、作業リスト=「」でなければ、(
      検索パス=作業リスト#0
      作業リストの、0行目を、行削除。
      作業リストは、それ。
      下位フォルダ列挙へ、飛ぶ。
   )
   戻る。

*設定メニューイベント
   もし、(イベントオブジェクトの、値)ならば、イベントオブジェクトの、値=0
   違えば、イベントオブジェクトの、値=1
   戻る。

*検索オプションメニューイベント
   検索オプション0メニューの、値は、0。
   検索オプション1メニューの、値は、0。
   検索オプション2メニューの、値は、0。
   イベントオブジェクトの、値は、1。
   (イベントオブジェクトの、名前)の中で、8から、1つ、切り出す。
   検索オプションは、それ。
   戻る。

*検索_そのまま
   結果リストを、反復(
      s=それ。S=英数半角変換。
      'Sを、「*{検索キーワード}*」で、マッチ。
      Sの中で、検索キーワードが、何文字目。
      'もし、それ<>「」ならば、
      もし、それ>0ならば、
         リスト検索結果の、アイテムは、(リスト検索結果の、アイテム)&「{s}\n」
   )
   戻る。
   
*検索_AND
   結果リストを、反復(
      検索フラグ=0。s=それ。S=英数半角変換。
      検索キーワードを、反復(
         'Sを、「*{それ}*」で、マッチ。
         Sの中で、それが、何文字目。
         'もし、それ<>「」ならば、
         もし、それ>0ならば、検索フラグ=検索フラグ+1
      )
      もし、検索フラグ=要素数(検索キーワード)ならば、
         リスト検索結果の、アイテムは、(リスト検索結果の、アイテム)&「{s}\n」
   )
   戻る。

*検索_OR
   結果リストを、反復(
      s=それ。S=英数半角変換。
      検索キーワードを、反復(
         'Sを、「*{それ}*」で、マッチ。
         Sの中で、それが、何文字目。
         'もし、それ<>「」ならば、(
         もし、それ>0ならば、(
            リスト検索結果の、アイテムは、(リスト検索結果の、アイテム)&「{s}\n」
            抜ける。
         )
      )
   )
   戻る。



▲[ 414 ] / 返信無し
NO.592  バージョンアップ
□投稿者/ moka -(2002/03/11(Mon) 06:56:29)
□U R L/ http://www.geocities.jp/moka21/teatime/
リストファイルの書式が変わったので要再リストアップ。
ワイルドカードにはまだ未対応。INIファイル名変更。

自分としては使いやすく育ってるんですが、
手動リストアップ&フォルダだけ検索は需要ないんだろうな…。

あと、ファイルドロップだけでなく、テキストドロップも出来たらなあ。



- Child Tree -