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

製品詳細はこちら

<< Tipsに関するFAQ一覧へ戻る