FAQ
FAMOS
シーケンス / 関数top
└Tips
ID.s032
Q. フォルダー名をグループ名とし、フォルダー内のデータをそのグループのデータとして読み込む
例えば、下(左)のようなフォルダー構成になっていると仮定します。
Test1やTest2フォルダーを選択することで、フォルダー名をグループ変数として、それぞれのデータを下表(右)のように読み込むことができますか?
C:\TOYO ├ \Test1 │ Sample1.dat │ Sample2.dat │ Sample3.dat │ Sample4.dat └ \Test1 Sample1.dat Sample2.dat Sample3.dat Sample4.dat
A.
以下のシーケンスで実現することができます。
ポイントは取得したグループ名を<>を使って変数として扱うことです。
;フォルダー選択 ; ダイアログボックスが表示されるので、処理したいフォルダーを選択します ; 第2引数の”C:\”はデフォルトで開くフォルダーを指定します。 ; 都合のよい場所を指定してください。 _dir = FsDlgSelectDirectory( "フォルダー選択", "C:\", 0) IF TLeng(_dir) > 0 ;フォルダー名のグループ変数を作成 _grName = FsSplitPath( _dir, 2) <_grname> = GrNew() ;フォルダー内にあるファイルのリストを作成 _FileListID = FsFileListNew (_dir, "*.*", 0, 0, 0) _n = FsFileListGetCount( _FileListID) _i=1 WHILE _i <= _n ;各ファイルに対して処理を実行 _fname = FsFileListGetName( _FileListID, _i) ;データファイル読み込み _fid = FileOpenDSF( _fname, 0) ;読み取り専用 _varname = FileObjName?( _fid, 1) <_grname>:<_varname> = FileObjRead( _fid, 1) _err = FileClose(_fid) _i = _i+1 END FsFileListClose(_FileListID) END ;中間変数を削除 Delete _*