ディレクトリユーティリティライブラリ
ユーティリティライブラリ
作成日:2000/06/01
更新日:2001/10/10
ディレクトリユーティリティライブラリについて
ダウンロード 仕様 使用方法
制限事項 著作権・転載条件など
- ◆ディレクトリユーティリティライブラリについて
- ATAカード(F1:\)上のディレクトリを扱う関数をまとめたライブラリです。
- ディレクトリ情報ファイルについては、下記を参照ください。
- Ver2.00から、MI-E1以降の機種の場合、CFカード(C1:\)、SDカード(C2:\)上のディレクトリを操作可能です。
(仕様説明において、F1の部分がC1, C2になります。ただし、ディレクトリ情報ファイルはF1です。)
- Ver3.00から、ディレクトリファイル関連APIに対応しました。MI-EX1以降の機種では、ディレクトリ情報ファイルがなくてもディレクトリを扱えます。
- ◆動作環境
- シャープザウルスシリーズ
- 動作確認機種:MI-310, MI-L1
- ◆更新履歴
- 2000/06/01 Ver1.00
- 2000/06/17 Ver1.01
- 提供ソースファイルに間違いがありました。
COM_FileCopy関数がないというエラーが発生します。
- 2000/06/30 Ver1.10
- ファイル情報(FDIRBUF型)から年月日文字列生成関数追加。
- ファイル情報(FDIRBUF型)から時分文字列生成関数追加。
- ディレクトリボタンメニューで使用する文字列をライブラリ内部ではなく、アプリ側で保持するようにした。
これにより、同一フォーム上に複数のディレクトリボタンメニューが設置可能。
- ディレクトリ情報ファイルを操作する関数群を追加。
- 2000/07/07 Ver1.14
- 2000/07/15 Ver1.16
- ディレクトリボタンメニュー操作関数のバグ修正。
- ファイル検索方法をFC_SEARCH_NEXTからFC_SEARCH_INV_NEXTに変更。
- 2000/08/31 Ver1.18
- DIR_SearchDirs関数とDIR_SearchFiles関数の戻り値を、検索結果格納ワークへの格納数(全体)から、検索結果格納ワークへの追加格納数に変更。
- DIR_SearchDirsAndFiles関数において、拡張子の小文字/大文字を区別する仕様のドライブの場合、検索パス文字列の拡張子部分を全て小文字にしたものと、全て大文字にしたものも検索対象とするようにした。
例.検索パス文字列の拡張子が、Txtの場合
*.txt, *.Txt, *.TXTのものが検索対象となる。
- 2000/12/18 Ver1.19(未公開)
- DIR_SortSchFiles関数において、ディレクトリのソート順序がおかしいバグ修正。
- 2000/12/31 Ver2.00
- MI-E1向けに、CF/SDカードの同時アクセスに対応。
- 2001/06/19 Ver2.04
- DIR_SearchDirs関数において、検索結果数がおかしくなるバグ修正。
- DIR_ChangeDirList関数において、ディレクトリ情報ファイル(DIRLIST.INI)のファイルオープン属性をWRITEにしていたバグ修正。
- DIR_SearchFiles関数において、同一ファイル名が検索される場合の対処処理を追加。
- ディレクトリのみをソートする場合、正しくソーティングできない場合があるバグを修正。
- 2001/06/21 Ver2.05
- DIR_SearchFiles関数において、同一ファイル名が検索される場合の対処処理を追加。
Ver2.04のバグ修正ミス。
- 2001/10/07 Ver3.00
- ディレクトリ関連ファイルAPIに対応。
MI-EX1以降なら、ディレクトリ関連APIを使用可能。
- 2001/10/10 Ver3.10
- DIRs_SearchDirs関数において、同一ディレクトリ名が検索される場合の対処処理のバグ修正。
- ディレクトリボタンメニュー関係の関数を見直し。
機種に応じて、F0:, F0:\, F1:, F1:\, C1:\, C2:\から表示内容を選択。
- ◆ダウンロード
- ライブラリ+ヘッダファイル+説明書
- DirUtil-310.lzh
- ソースファイル+ヘッダファイル+説明書
- DirUtil-310s.lzh
- サンプルMOREソフト(プロジェクト一式)
- DirSamp.lzh
- ◆仕様
- ディレクトリ情報ファイル
- ディレクトリボタンメニュー関係
- ディレクトリ・ファイル操作関係
- ディレクトリ情報ファイル操作関係
- ディレクトリ関連API関係
- ディレクトリ情報ファイル
MI-EX1より前の機種では、ATAカード(F1:)上のディレクトリの存在を知っている必要があります。そこで、ディレクトリ情報を記述してあるファイルを用意し、そのディレクトリ情報ファイルをもとに、ディレクトリを擬似的に扱うようにします。
ディレクトリ情報ファイル名の仕様は、下記のとおりです。
ファイル名:F1:\DIRLIST.INI
形式:テキスト形式(CR-LF=\r\n)です。
内容:・1行に1ディレクトリ情報を記述。
・ディレクトリ情報は絶対パス指定。
・ディレクトリセパレータは、'\'。
・ディレクトリ名の最後に'\'を付加する。
・ディレクトリ情報の終端を';'で区切る。これ以降をコメントとして使用可能。
注意:・同じディレクトリが複数ある場合、別のディレクトリと判断してしまいます。(チェックが甘いです。)
・順序は特に問いません。自由です。
例:ディレクトリ情報の記述例を下記に示します。
F1:\;
F1:\TEST\; ここはコメントです。ディレクトリテスト用
F1:\BACKUP\;
F1:\TEST\TMP\;
- ディレクトリボタンメニュー関係
====================================
形 式:void DIR_InitDirMnWork(DIRMNWORK *pDirMnWork)
引 数:pDirMnWork ディレクトリメニューワークへのポインタ
戻り値:なし
概 要:ディレクトリボタンメニュー用のワーク領域を初期化する。
メニュー用文字列として、下記のように設定する。
MI-EX1より前の機種:"F0:", "F1:", "F1:\", NULL
MI-E1より前の機種 :"F0:", "F0:\", "F1:", "F1:\", NULL
MI-E1以降の機種 :"F0:\", "C1:\", "C2:\", NULL
/* ディレクトリメニューワーク構造体 */
typedef struct {
UCHAR *topDir[4];
UCHAR curDir[LONG_DFNAME_LEN];
} DIRMNWORK;
FormSetup関数内で使用する。
====================================
形 式:void DIR_MakeMenuItems(UCHAR **MenuList, UCHAR **MenuAttr, DIRMNWORK *pDirMnWork)
引 数:MenuList メニュー文字列リソースへのポインタ
MenuAttr メニュー属性リソースへのポインタ
pDirMnWork ディレクトリメニューワークへのポインタ
戻り値:なし
概 要:引数pDirMnWorkに設定されている内容に従い、メニュー用文字列に設定されているものと、カレントディレクトリを持つボタンメニューリソースを生成する。
動的メニュー作成用のコールバック関数(BtnMenuCB)で使用する。
カレントディレクトリが、メニュー用文字列に設定されているものの場合には、4つめのメニュー項目は作成しない。
MI-E1より前の機種:F1:ドライブが使用できない場合には、F1:, F1:\を選択不可にする。
MI-E1以降の機種 :使用できないドライブは、メニュー用文字列に設定されません。
====================================
形 式:void DIR_GetMenuItem(int dirPartID, CONTROLHD ctrlHd, DIRMNWORK *pDirMnWork, UCHAR *dirName)
引 数:dirPartID ボタンメニュー部品名
ctrlHd コントロールテーブル
pDirMnWork ディレクトリメニューワークへのポインタ
dirName ディレクトリ名文字列(返答用)
戻り値:なし
概 要:現在選択されているディレクトリ名を引数dirNameに設定して返す。
但し、カレントディレクトリは、引数pDirMnWorkのメンバcurDirにも設定されるので、引数dirNameをNULLにする事も可能。
MI-E1より前の機種:F0:, F1:, F1:\あるいは絶対ディレクトリ名を取得する。
MI-E1以降の機種 :F0:\, C1:\, C2:\あるいは絶対ディレクトリ名を取得する。
====================================
形 式:void DIR_SetMenuItem(int dirPartID, CONTROLHD ctrlHd, DIRMNWORK *pDirMnWork, UCHAR *dirName)
引 数:dirPartID ボタンメニュー部品名
ctrlHd コントロールテーブル
pDirMnWork ディレクトリメニューワークへのポインタ
dirName ディレクトリ名文字列
戻り値:なし
概 要:ディレクトリ名文字列としては、絶対ディレクトリ名による指定と、相対ディレクトリ名による指定方法がある。
ディレクトリ名に従い、カレントディレクトリを変更し、ディレクトリボタンメニューの選択状態を変更する。
サブディレクトリ名の形式は、下記のとおり。
[..] =>親ディレクトリを表わす。
[TEST\] =>サブディレクトリ名を表わす。'\'が必要。
注 意:カレントディレクトリが、F0:, F1:の場合でもカレントディレクトリの移動処理を行なってしまうので、この関数を呼び出す前にチェックが必要です。
例 :カレントディレクトリ=F1:\、ディレクトリ名文字列=[TEST\]の場合
=>カレントディレクトリは、F1:\TEST\ になる。
カレントディレクトリ=F1:\TEST\、ディレクトリ名文字列=[..]の場合
=>カレントディレクトリは、F1:\ になる。
====================================
- ディレクトリ・ファイル操作関係
====================================
形 式:BOOLEAN DIR_FDirBufToYMDText(UCHAR *YMDText, FDIRBUF *pDirAcc, TTEXTTYPE textType)
引 数:YMDText 年月日格納用文字列
pDirAcc ファイル情報構造体へのポインタ
textType テキストタイプ
TSEP_NONE :区切り文字無し
TSEP_SLASH :区切り文字'/'
TSEP_PERIOD:区切り文字'.'
TSEP_KANJI :区切り文字漢字
戻り値:正常終了 =TRUE
異常終了 =FALSE
概 要:ファイル情報(FDIRBUF型)から年月日文字列に変換し、引数YMDTextに格納する('\0'付加)。
====================================
形 式:HMS_MODE DIR_FDirBufToHMText(UCHAR *HMText, FDIRBUF *pDirAcc, TTEXTTYPE textType, TIME_MODE tMode)
引 数:HMText 時分格納用文字列
pDirAcc ファイル情報構造体へのポインタ
textType テキストタイプ
TSEP_NONE :区切り文字無し
TSEP_SLASH :区切り文字'/'
TSEP_PERIOD:区切り文字'.'
TSEP_KANJI :区切り文字漢字
tMode 時制モード
MODE_24:24時間制
MODE_12:12時間制
戻り値:エラー =MODE_HMS_ERR
24時間制データ =MODE_24_ASC
12時間制の午前データ =MODE_12_AM_ASC
12時間制の午後データ =MODE_12_PM_ASC
概 要:ファイル情報(FDIRBUF型)から時分文字列に変換し、引数HMTextに格納する('\0'付加)。
====================================
形 式:USHORT DIR_SearchFiles(UCHAR *schPath, SCHWORK *pSchWork)
引 数:schPath 検索パス文字列
pSchWork 検索結果格納ワーク(返答用)
戻り値:検索結果格納ワークへの追加格納数
概 要:検索パス文字列の検索条件に従い、ファイルを検索し、検索結果をpSchWorkで指定される領域に格納して返す。
pSchWork->numSchFilesの値まで検索結果データが存在するとして、その値以降に今回の検索結果を格納していく。
検索結果格納ワーク領域を拡大確保しながら、検索結果を格納していくため、必要が無くなった時点で、DIR_FreeSchFiles関数を呼び出して、メモリ領域から解放する必要がある。
格納数の合計は、pSchWork->numSchFilesに設定される。
====================================
形 式:void DIR_SetSearchPath(UCHAR *schPath, UCHAR *dirName, UCHAR *extStr)
引 数:schPath 検索パス文字列(返答用)
dirName ディレクトリ名文字列
extStr 拡張子文字列
戻り値:なし
概 要:dirNameとextStrから、検索パス文字列を作成する。
ファイル名のベース部分は、'*'とし、拡張子部分は3文字より短い場合には、'?'で補完する。
例 :ディレクトリ名文字列=F1:\TEST\、拡張子=LZHの場合
=>検索パス文字列は、F1:\TEST\*.LZH となる。
====================================
形 式:USHORT DIR_SearchDirsAndFiles(UCHAR *schPath, SCHWORK *pSchWork)
引 数:schPath 検索パス文字列
pSchWork 検索結果格納ワーク(返答用)
戻り値:検索結果格納ワークへの合計格納数
概 要:検索結果格納ワーク領域を解放した後、新たに検索パス文字列に従い、サブディレクトリおよびファイルを検索し、検索結果格納ワークに格納して返す。
必ず、サブディレクトリ、ファイルの順に検索を行なう。
指定された検索パス文字列のものだけでなく、検索パス文字列の拡張子部分を全て小文字にしたものと、全て大文字にしたものも検索対象とする。
ただし、大文字/小文字を区別するかどうかは、機種やドライブに依存する。
サブディレクトリ検索は、
・ディレクトリモード = ディレクトリ情報ファイル使用モードの場合
ディレクトリ情報ファイル内から、サブディレクトリを検索する。
・ディレクトリモード = システムライブラリ使用モードの場合
ディレクトリ情報ファイルに関係なく、実在するサブディレクトリを検索する。
====================================
形 式:void DIR_SortSchFiles(SCHWORK *pSchWork, UCHAR sortType)
引 数:pSchWork 検索結果格納ワーク
sortType 昇順(ASCEND_ORDER)/降順(DESCEND_ORDER)
戻り値:なし
概 要:検索結果格納ワーク内のサブディレクトリおよびファイルをsortTypeに従ってソーティングする。
サブディレクトリとファイル名は別々にソーティングする。
====================================
形 式:void DIR_FreeSchFiles(SCHWORK *pSchWork)
引 数:pSchWork 検索結果格納ワーク
戻り値:なし
概 要:検索結果格納ワーク領域を解放する。
====================================
形 式:BOOLEAN DIR_MakeSubDir(UCHAR *dirName, UCHAR *subDir)
引 数:dirName ディレクトリ名
subDir サブディレクトリ名
戻り値:正常終了 =TRUE
異常終了 =FALSE
概 要:・ディレクトリモード = ディレクトリ情報ファイル使用モードの場合
ディレクトリ情報ファイルに、ディレクトリ名+サブディレクトリ名のディレクトリ情報を追加する。
例.ディレクトリ名=F1:\TEST\、サブディレクトリ名=SUBDIRの場合
ディレクトリ名=F1:\TEST\SUBIDR\となリ、ディレクトリ情報ファイルには、F1:\TEST\SUBDIR\;が追記される。
・ディレクトリモード = システムライブラリ使用モードの場合
ディレクトリ情報ファイルに関係なく、サブディレクトリを作成する。
注 意:ここでのサブディレクトリ名には、'['と']'はつけない。
また、最後に'\'も必要ない。
====================================
形 式:BOOLEAN DIR_DeleteSubDir(UCHAR *dirName, UCHAR *subDir)
引 数:dirName ディレクトリ名
subDir サブディレクトリ名
戻り値:正常終了 =TRUE
異常終了 =FALSE
概 要:・ディレクトリモード = ディレクトリ情報ファイル使用モードの場合
ディレクトリ情報ファイルから、ディレクトリ名+サブディレクトリ名で始まるすべてのディレクトリ情報を削除する。
ただし、実際のディレクトリやファイルは削除されない。
例.ディレクトリ情報ファイルの内容
F1:\TEST\;
F1:\BACKUP\;
F1:\TEST\SUBDIR1\;
F1:\TEST\SUBDIR2\;
ディレクトリ名=F1:\, サブディレクトリ名=TESTの場合
ディレクトリ情報ファイルの内容は下記に示すようになる。
F1:\BACKUP\
・ディレクトリモード = システムライブラリ使用モード の場合
ディレクトリ名+サブディレクトリで示されるディレクトリを削除する。
ただし、サブディレクトリ内にディレクトリやファイルが存在する場合、サブディレクトリは削除されない。
====================================
形 式:USHORT DIR_SearchDirs(UCHAR *schPath, SCHWORK *pSchWork)
引 数:schPath 検索パス文字列
pSchWork 検索結果格納ワーク(返答用)
戻り値:検索結果格納ワークへの追加格納数
概 要:検索パス文字列のディレクトリ内のサブディレクトリを検索し、検索結果をpSchWorkで指定される領域に格納して返す。
検索文字列のファイル名部分は、検索条件として考えない。(必ずディレクトリを検索する。)
検索結果格納ワーク領域を拡大確保しながら、検索結果を格納していくため、必要がなくなった時点で、DIR_FreeSchFiles関数を呼び出して、メモリ領域から解放する必要がある。
格納数の合計は、pSchWork->numSchFilesに設定される。
・ディレクトリモード = ディレクトリ情報ファイル使用モードの場合
ライブラリ内部で、DIR_SearchDirLists関数を呼び出す。
・ディレクトリモード = システムライブラリ使用モード の場合
ライブラリ内部で、DIRs_SearchDirs関数を呼び出す。
====================================
形 式:USHORT DIR_GetDirMode()
引 数:なし
戻り値:ディレクトリモード
概 要:現在設定されているディレクトリモードを返す。
DIR_MODE_AUTO(=0):自動モード
ライブラリ関数を最初に呼び出した時に、機種判定してどちらのモードを使用するかを決定する。(デフォルト)
DIR_MODE_SYSLIB (=1):システムライブラリ使用モード
MI-EX1以降で使用可能なディレクト関連APIを使用する。
DIR_MODE_DIRLIST(=2):ディレクトリ情報ファイル使用モード
ディレクトリ情報ファイルを使用する。
====================================
形 式:BOOLEAN DIR_SetDirMode(USHORT dirMode)
引 数:dirMode ディレクトリモード
戻り値:正常終了 =TRUE
異常終了 =FALSE
概 要:ディレクトリモードを引数dirModeで指定されたディレクトリモードに設定する。
値のチェックは行っていないので、注意が必要。
====================================
- ディレクトリ情報ファイル操作関係
====================================
形 式:USHORT DIR_SearchSubDirLists(UCHAR *topDir, DIRLISTWORK *pDirListWork)
引 数:topDir 検索対象トップディレクトリ
pDirListWork ディレクトリ情報ワーク(返答用)
戻り値:ディレクトリ情報ワークへの格納数(合計)
概 要:引数topDirで指定されるディレクトリ以降すべてのディレクトリを、ディレクトリ情報ファイルから検索して、引数pDirListWorkで示されるディレクトリ情報ワークに格納して返す。
ディレクトリ情報ワーク領域を拡大確保しながら、ディレクトリ情報を格納していくため、必要が無くなった時点で、DIR_FreeDirLists関数を呼び出して、メモリ領域から解放する必要がある。
/* ディレクトリ情報検索結果格納ワーク */
typedef struct {
UCHAR dirName[LONG_DFNAME_LEN]; /* ディレクトリ名 */
UCHAR comment[80]; /* コメント */
} DIRLIST;
typedef struct {
DIRLIST *dirLists;
USHORT numDirLists;
} DIRLISTWORK;
====================================
形 式:BOOLEAN DIR_UpdateDirLists(UCHAR *topDir, DIRLISTWORK *pDirListWork)
引 数:topDir 更新対象トップディレクトリ
pDirListWork ディレクトリ情報ワーク
戻り値:正常終了 =TRUE
異常終了 =FALSE
概 要:ディレクトリ情報ワーク内にあるディレクトリ情報を用いて、引数topDirで指定されるボリュームにあるディレクトリ情報ファイルを再作成する。
ディレクトリ情報ファイルが存在した場合、上書きされる。
ディレクトリ情報ファイルが存在しなかった場合、新規に作成する。
====================================
形 式:void DIR_SortDirLists(DIRLISTWORK *pDirListWork)
引 数:pDirListWork ディレクトリ情報ワーク
戻り値:なし
概 要:ディレクトリ情報ワーク内のディレクトリ情報をツリー構成を考慮して名称の昇順にソーティングする。
====================================
形 式:void DIR_FreeDirLists(DIRLISTWORK *pDirListWork)
引 数:pDirListWork ディレクトリ情報ワーク
戻り値:なし
概 要:ディレクトリ情報ワーク領域を解放する。
====================================
形 式:BOOLEAN DIR_AddDirList(UCHAR *dirName)
引 数:dirName 追加ディレクトリ名(絶対パス、最後は'\')
戻り値:正常終了 =TRUE
異常終了 =FALSE
概 要:ディレクトリ情報ファイルに、引数dirNameで指定されたディレクトリ情報を追加する。
既に、ディレクトリ情報ファイル内にある場合には、エラーとなる。
====================================
形 式:BOOLEAN DIR_ChangeDirList(UCHAR *dstDirName, UCHAR *srcDirName)
引 数:dstDirName 変更後ディレクトリ名(絶対パス、最後は'\')
srcDirName 変更前ディレクトリ名(絶対パス、最後は'\')
戻り値:正常終了 =TRUE
異常終了 =FALSE
概 要:ディレクトリ情報ファイル内に、引数srcDirNameで指定されたディレクトリ情報が存在する場合、引数dstDirNameで指定されたディレクトリ情報に変更する。
変更前ディレクトリ名がない場合には、エラーとなる。
====================================
形 式:BOOLEAN DIR_DeleteDirList(UCHAR *dirName)
引 数:dirName ディレクトリ名(絶対パス、最後は'\')
戻り値:正常終了 =TRUE
異常終了 =FALSE
概 要:ディレクトリ情報ファイル内から、引数dirNameで指定されたディレクトリ情報を削除する。
ディレクトリ情報内にない場合には、エラーになる。
注 意:実際のディレクトリやファイルは削除されない。
====================================
形 式:USHORT DIR_SearchDirLists(UCHAR *schPath, SCHWORK *pSchWork)
引 数:schPath 検索パス文字列
pSchWork 検索結果格納ワーク(返答用)
戻り値:検索結果格納ワークへの追加格納数
概 要:検索パス文字列のディレクトリ内のサブディレクトリをディレクトリ情報ファイルから検索し、検索結果をpSchWorkで指定される領域に格納して返す。
検索文字列のファイル名部分は、検索条件として考えない。(必ずディレクトリを検索する。)
pSchWork->numSchFilesの値まで検索結果データが存在するとして、その値以降に今回の検索結果を格納していく。
検索結果格納ワーク領域を拡大確保しながら、検索結果を格納していくため、必要が無くなった時点で、DIR_FreeSchFiles関数を呼び出して、メモリ領域から解放する必要がある。
格納数の合計は、pSchWork->numSchFilesに設定される。
検索結果格納ワークに格納されるサブディレクトリ名の形式は、下記のとおり。
[..] =>親ディレクトリを表わす。
[TEST\] =>サブディレクトリ名を表わす。'\'が必要。
/* 検索結果格納ワーク */
typedef struct {
UCHAR fileName[DFNAME_LEN]; /* 検索結果ファイル名 */
} SCHFILE;
typedef struct {
SCHFILE *schFiles; /* 検索結果ファイルリスト */
USHORT numSchFiles; /* 検索結果ファイル数 */
} SCHWORK;
====================================
- ディレクトリ関連API関係
====================================
形 式:BOOLEAN DIRs_MakeSubDir(UCHAR *dirName, UCHAR *subDir)
引 数:dirName ディレクトリ名(絶対パス、最後は'\')
subDir 作成するサブディレクトリ名
戻り値:正常終了 =TRUE
異常終了 =FALSE
概 要:引数dirNameで指定されたディレクトリに、引数subDirで指定されたサブディレクトリを、ディレクトリ関連APIを使用して作成する。
====================================
形 式:BOOLEAN DIRs_DeleteSubDir(UCHAR *dirName, UCHAR *subDir)
引 数:dirName ディレクトリ名(絶対パス、最後は'\')
subDir 削除するサブディレクトリ名
戻り値:正常終了 =TRUE
異常終了 =FALSE
概 要:引数dirNameで指定されたディレクトリ上にある、引数subDirで指定されたサブディレクトリを、ディレクトリ関連APIを使用して削除する。
サブディレクトリ内にディレクトリやファイルが存在する場合、エラーになる。
====================================
形 式:USHORT DIRs_SearchDirs(UCHAR *schPath, SCHWORK *pSchWork)
引 数:schPath 検索パス文字列
pSchWork 検索結果格納ワーク(返答用)
戻り値:検索結果格納ワークへの追加格納数
概 要:検索パス文字列のディレクトリ内のサブディレクトリを、ディレクトリ関連APIを使用して検索し、検索結果をpSchWorkで指定される領域に格納して返す。
検索文字列のファイル名部分は、検索条件として考えない。(必ずディレクトリを検索する。)
pSchWork->numSchFilesの値まで検索結果データが存在するとして、その値以降に今回の検索結果を格納していく。
検索結果格納ワーク領域を拡大確保しながら、検索結果を格納していくため、必要が無くなった時点で、DIR_FreeSchFiles関数を呼び出して、メモリ領域から解放する必要がある。
格納数の合計は、pSchWork->numSchFilesに設定される。
検索結果格納ワークに格納されるサブディレクトリ名の形式は、下記のとおり。
[..] =>親ディレクトリを表わす。
[TEST\] =>サブディレクトリ名を表わす。'\'が必要。
/* 検索結果格納ワーク */
typedef struct {
UCHAR fileName[DFNAME_LEN]; /* 検索結果ファイル名 */
} SCHFILE;
typedef struct {
SCHFILE *schFiles; /* 検索結果ファイルリスト */
USHORT numSchFiles; /* 検索結果ファイル数 */
} SCHWORK;
====================================
形 式:USHORT DIRs_SearchSubDirLists(UCHAR *topDir, DIRLISTWORK *pDirListWork)
引 数:topDir 検索対象トップディレクトリ
pDirListWork ディレクトリ情報ワーク(返答用)
戻り値:ディレクトリ情報ワークへの格納数(合計)
概 要:引数topDirで指定されるディレクトリ以降すべてのディレクトリを、ディレクトリ関連APIを使用して検索し、引数pDirListWorkで示されるディレクトリ情報ワークに格納して返す。
ディレクトリ情報ワーク領域を拡大確保しながら、ディレクトリ情報を格納していくため、必要が無くなった時点で、DIR_FreeDirLists関数を呼び出して、メモリ領域から解放する必要がある。
/* ディレクトリ情報検索結果格納ワーク */
typedef struct {
UCHAR dirName[LONG_DFNAME_LEN]; /* ディレクトリ名 */
UCHAR comment[80]; /* コメント */
} DIRLIST;
typedef struct {
DIRLIST *dirLists;
USHORT numDirLists;
} DIRLISTWORK;
====================================
- ◆使用方法
- libDirUtil.aをSZABインストールディレクトリの下の lib ディレクトリにコピーする。
- DirUtil.hをSZABインストールディレクトリの libheader/c ディレクトリにコピーする。
あるいは、各プロジェクトのディレクトリの csrc ディレクトリの下にコピーする。
- SZAB統合開発環境のリンカオプション LKFLAGS2 に -lDirUtil を追加する。
- ◆制限事項
- コントロールユーティリティライブラリが必要。
- MI-EX1より以前の機種では、システムライブラリ使用モードで使用しないでください。
- ◆著作権・転載条件など
- 本ライブラリは、制限なしで使用可能です。自由に使用してください。
但し、本ライブラリを使用して生じるあらゆる障害に対して、一切責任を負いません。
ディレクトリユーティリティライブラリについて
ダウンロード 仕様 使用方法
制限事項 著作権・転載条件など
MOREソフト