2017年2月22日水曜日

[UWSC]ファイル操作の関数 [自作関数]

初心者のプログラミング導入のため、簡単な自作関数を作って公開しているブログ。今回は、ファイル操作を行うための関数です。

記事の内容

○ファイル操作の関数
    戻値(str)=chk_path(path)
    戻値(int)=file_exists(path)
    戻値(int)=file_del(path)
    戻値(int)=file_save(path,dt,mode)
    戻値(ARY)=file_load(path)

せっかくコンピュータで処理しているわけですから、結果を残したり、前回の設定を読み込んだり色々したいわけです。
でも開発環境によってファイル操作に関しての命令が異なります。
というわけで、自分が使っている他の環境と同じ仕様となるようUWSCでのファイル操作を関数としてまとめておきます。

ファイル操作の関数

関数の仕様とソースは、
自作関数chk_path path=chk_path("C:\ポク太郎製\いたずらソフト\poku")
             フルパスを渡しているので、"C:\ポク太郎製\いたずらソフト\poku"を返す
path=chk_path("poku")
             フルパスではない"poku"を渡しているので、"C:\ポク太郎製\いたずらソフト\poku"を返る
             (呼び出したプログラムが"C:\ポク太郎製\いたずらソフト"にあった場合)

FUNCTION chk_path(path)
 // ファイル名だけ渡された場合は
 // 実行ファイルのある場所(GET_CUR_DIR)に変換する
   if left(path,2)="\\"//ネットワークフォルダ指定された
   elseif keyword(path,":\")=1//フルパス指定された
   else
    path=GET_CUR_DIR+"\"+path
   endif
    RESULT=path
FEND

自作関数file_exists R=file_exists("C:\system\pokutarou")    引数として渡したファイルがない場合は0を、ある場合は1を返す

FUNCTION file_exists(path)
    path=chk_path(path)
   if FOPEN(path,F_EXISTS)=1
    RESULT=1
   else
    RESULT=0
   endif
FEND

自作関数file_del(path) R=file_del("C:\system\pokutarou")    引数として渡したファイルを削除する(Rには失敗時に0、成功時に1が入る)

FUNCTION file_del(path)
    path=chk_path(path)
     if FOPEN(path,F_EXISTS)=1
    dir="del "+path
    DOSCMD(dir)
    RESULT=1
     else
    RESULT=0
     endif
FEND

自作関数file_save(path,dt,mode) R=file_save("C:\system\pokutarou","hogeee",0)    引数として渡したファイルにhogeeeと記録する
R=file_save("C:\system\pokutarou","hogeee",0)    引数として渡したファイルにhogeeeと追記する
                Rには常に1が入る(何にも使用しないダミーです)

FUNCTION file_save(path,dt,mode)//mode=0:上書き、=1:追加
    path=chk_path(path)
   select mode
   case 0
    file=FOPEN(path,F_WRITE)
    FPUT(file,dt)
    FCLOSE(file)
   case 1
 // FOPEN()関数には、読み書き両用モード(F_READ OR F_WRITE)
 // このモードで書き込み行と書き込み列を省略して書き込みすると、
 // 末尾に改行+書き込み。
    file=FOPEN(path,F_READ or F_WRITE)
    FPUT(file,dt)
    FCLOSE(file)
   selend
    RESULT=1
FEND

自作関数file_load(path) ARY=file_load("C:\system\pokutarou")    引数として渡したファイルの内容がARY(配列変数)に入る

FUNCTION file_load(path)
//       呼び出し側ソース
//    fdt=path("ファイルパス")
//    先頭行=fdt[0]
//    最終行=fdt[ubound(fdt)]
//   n行目に書かれているデータは呼び出し側配列fdt[n-1]に入る
    path=chk_path(path)
     if FOPEN(path,F_EXISTS)=1
    file=FOPEN(path,F_READ)
    n=FGET(file,F_LINECOUNT)
    DIM read[n-1]
      for i=0 to n-1
    read[i]=FGET(file,i+1,1)
      next
    FCLOSE(file)
     else
    DIM read[0]
    read[0]="ファイルが見つかりません。"
     endif
    RESULT=slice(read,0,length(read)-1)
FEND


プログラム中にある命令・関数
GET_CUR_DIR UWSCの特殊変数
この変数には呼び出したUWSCのプログラムのあるパス(ディレクトリ)が入っています
FOPEN(パス,F_EXISTS) パス(文字列)で指定されたファイルが存在するかどうかを調べる関数
DOSCMD(コマンド) コマンド(文字列)をDOS窓に与える命令
FOPEN(パス,F_WRITE) パス(文字列)で指定された場所のファイルへ書込モードで開くファイルIDを返す関数
FOPEN(path,F_READ or F_WRITE) パス(文字列)で指定された場所のファイルへ追加書込モードで開くファイルIDを返す関数
FPUT(ファイルID,データ) ファイルIDにデータ(文字列)を書き込む命令
FOPEN(パス,F_READ) パス(文字列)で指定された場所のファイルを読込モードで開くファイルIDを返す関数
FGET(ファイルID,何行目,何行) ファイルIDのファイルの何行目から何行分読み込めという命令
FGET(ファイルID,F_LINECOUNT) ファイルIDのファイルが全部で何行あるかを返す命令(関数のように使用できる)
FCLOSE(ファイルID) ファイルIDのファイルを閉じる命令



記事の内容

記事の内容は伝わりましたでしょうか。
○ファイル操作の関数
    戻値(str)=chk_path(path)
    戻値(int)=file_exists(path)
    戻値(int)=file_del(path)
    戻値(int)=file_save(path,dt,mode)
    戻値(ARY)=file_load(path)



関数群のダウンロードはこちら
func_poku.uwsのコメント欄に呼び出し方が書いてあります。


【関連記事】  [UWSC]配列変数と関数
[UWSC]日付時刻を文字列で返す関数
[UWSC]よく使う記号をグローバル宣言
[UWSC]配列の最大要素を返す関数

ファイル操作の関数をまとめた

UWSC自作関数解説


スポンサーリンク



blogramのブログランキング



0 件のコメント:

コメントを投稿