トップページ > 記事閲覧
FileRead_FindFirstなどの関数の使用方法
名前:was-blue.0793 日時: 2017/10/03 23:28

DXライブラリAndroid版でGetExternalFilePathで取得したパスの中に入っているファイルの一覧をディレクトリの中にあるファイルも含めて取得する必要が出てきましたが、 AndroidではFindFirstFileなどのWindowsのAPIが使用できません。 そこで、DXライブラリで同様の機能を持つFileRead_FindFirstといった関数を使用する必要がありますが、 リファレンスには掲載されておらず、FindFirstFileなどのWindowsのAPIともまた使い方が違うようです。 FileRead_FindFirstなどの関数の使用方法の一例をご提示いただきたいです。 またこちらは要望になりますが、ファイルを検索する関数は例えばエディットデータ機能を実装するうえでは有用な機能だと思われますので、 リファレンスに使用方法を掲載していただけると幸いです。
メンテ

Page: 1 |

Re: FileRead_FindFirstなどの関数の使用方法 ( No.1 )
名前:管理人 日時:2017/10/04 00:27

FileRead_findFirst, FileRead_findNext, FileRead_findClose は他の関数に比べて扱いが難しかったり Android では更新日時の情報が取得できなかったりと微妙なのでリファレンスに載せるべきか迷っています… とりあえずの例として C:\File フォルダの中にあるフォルダとファイルの名前を画面に表示する場合は以下のようになります #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int y ; FILEINFO FileInfo ; DWORD_PTR FindHandle ; // ウインドウモードで起動 ChangeWindowMode( TRUE ) ; // DXライブラリの初期化 if( DxLib_Init() < 0 ) return -1 ; // 検索開始、最初のファイルの情報を取得 // ( *.* や ???.* などのシンプルなワイルドカード表現に対応しています ) FindHandle = FileRead_findFirst( "D:\\File\\*", &FileInfo ) ; // ファイルが見つかった場合のみ分岐の中を実行 if( FindHandle != ( DWORD_PTR )-1 ) { y = 0 ; do { // ファイル名とフォルダかファイルかの情報を描画 DrawFormatString( 0, y, GetColor( 255,255,255 ), "%s %s", FileInfo.Name, FileInfo.DirFlag ? "フォルダ" : "ファイル" ) ; // 描画y座標をずらす y += 16 ; // 検索に引っかかる次のファイルの情報を取得、無かったらループを抜ける }while( FileRead_findNext( FindHandle, &FileInfo ) >= 0 ) ; } // 検索ハンドルの後始末 FileRead_findClose( FindHandle ) ; // キー入力待ち WaitKey() ; // DXライブラリの後始末 DxLib_End() ; // ソフトの終了 return 0 ; } よろしければお試しください m(_ _)m
メンテ
Re: FileRead_FindFirstなどの関数の使用方法 ( No.2 )
名前:was-blue.0793(解決) 日時:2017/10/27 19:55

ご提示いただいたソースをもとに実行したところファイルの一覧を取得することができました。 Windows APIのFindFirstFileなどの関数と似た感覚で使うことができましたが、 使う機会が少ないdo〜while文を使ったり、ディレクトリを発見したら更にその中を探索する場合は再帰処理が必要になったりと扱いは難しそうですね…… DXライブラリを使うAndroidアプリでファイルを検索する手段はこの関数を使うしかなく、Windows版でもWindows APIを使うよりは簡単にファイル情報を取得できるので、 個人の意見ですが載せる価値はあると考えています。 ありがとうございました!
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存