DIRMAGIC(&HDDAA)
何の事だかさっぱり分かりませんがマジッククッキーなるものが
VCで調査した所、必ずこの値だったのでそのまま使用。
コード:
Const DIRMAGIC = &HDDAA
DIR構造体
全ての関数がこの構造体を介してディレクトリ内を列挙します。
_d_hdir ファイル検索ハンドル。
_d_dirname 現在検索中のディレクトリ名。
_d_magic ディレクトリのマジッククッキーらしいが何なのか不明。
_d_nfiles VCだとreaddirを呼ばない状態は1、呼んだ後は0。
_d_buf 本当はChar型の配列だったけど面倒なので移植時に仕様変更。
コード:
Type DIR
_d_hdir As HANDLE
_d_dirname As *Char
_d_magic As DWord
_d_nfiles As DWord
_d_buf As WIN32_FIND_DATA
End Type
opendir関数
引数に指定したディレクトリを開いて列挙の準備をする。
戻り値はDIR構造体へのポインタ、関数が失敗すると0が返る。
ディレクトリの列挙が必要なくなった場合、必ず
closedir関数を呼んで検索ハンドルを破棄すること。
コード:
Function opendir(dirname As *Char) As *DIR
rewinddir関数
ディレクトリの列挙を最初からやり直す。
引数には
opendir関数の戻り値であるDIR構造体へのポインタを渡します。
この関数に戻り値はありません。
コード:
Sub rewinddir(dir As *DIR)
readdir関数
ディレクトリ内で列挙されたファイル名及びフォルダ名を取得します。
VCではdirent構造体へのポインタが返りますが、メモリの開放なんぞが面倒なので移植時にString型に仕様変更しました。
取得したファイル及びフォルダの追加情報がほしい場合はDIR構造体の
_d_bufメンバの
WIN32_FIND_DATA構造体にアクセスしてください。
コード:
Function readdir(dir As *DIR) As String
closedir関数
ディレクトリの列挙を終了します。
無効なDIRへのポインタを渡した場合、関数は失敗して0以外(-1)を返します。
コード:
Function closedir(dir As *DIR) As Long