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 _*