« 【講座】HSPよく使うフレーズ 第25回 敵が弾を撃つ | メイン | 【講座】HSPたまひよ塾 - 特別編「指定した年月の日数を得る」 »

2007年03月06日

【講座】HSP3ワンポイントテクニック 第16回

【講座】HSP3ワンポイントテクニック 第16回

このコーナーでは、HSP3の変わった使用例や、気がつきにくい機能など
を紹介していきたいと思います。

ファイルを扱うツールなどを作成していると、フォルダ内にある
ファイル一覧を取得する必要が出てくる場合があります。
複数のファイルに対して、同じ処理を行なう時などは、フォルダ内や
特定の拡張子だけをまとめて扱うと効率的です。
このような処理を「バッチ処理」と呼んだりします。
HSP3では、ファイル一覧を取得するための命令として「dirlist」が
用意されています。これは、指定されたフォルダ内にあるファイル
全てか、または名前に特定のパターンを持つものを複数行文字列として
取得できるというものです。
ファイル名を特定するためには「ワイルドカード」と呼ばれる表現を
使用します。これは、「*(アスタリスク)」記号を万能な名前として
扱うもので、「*.txt」と書けば拡張子が「.txt」のものすべて、
「*.*」の場合はすべてのファイルを表しています。

さて、dirlist命令でフォルダ内のファイル一覧は取得できますが、
その中にあるフォルダの下も含めて、すべてのファイルを取得したい
時には困ってしまいます。
そんな時のために、dirlistの上位バージョンにあたるdirlist2命令が
拡張プラグインHSPEXT.DLLで提供されています。
dirlist2命令は、フォルダの下の階層も含めてすべてのファイルを
取得する機能を持っています。また、同時にファイルのサイズや、
更新日時など付加情報も取得することができるのです。

以下は、変数dirで指定したフォルダ以下のファイル一覧を表示する
サンプルです。dirlist命令よりも手順が多くなっていますが、
取得される内容は大きく変わりません。

#include "hspext.as"
buf=""
dir=dir_cur ; 調べるパス
mes dir+"フォルダ以下のファイル一覧"
mesbox buf,640,400
chdir dir ; カレンドディレクトリに移動
dirlist2h 1 ; 初期設定
dirlist2 size,"*.*", 0, '\\' ; サイズを取得
sdim ftmp,size ; サイズを確保する
dirlist2r ftmp ; 結果を取得
objprm 0,ftmp ; 表示する
stop

(おにたま)

投稿者 usuaji : 2007年03月06日 21:24

口臭チェッカー市場