第6話 ファイル処理の基礎

--------------------- 第6話 ファイル処理の基礎 --------------------------


はじまり、はじまり~。


キ~ンコ~ンカ~ンコン。
<きりーつ! 礼! 着席>
で、何でアンタが頭の上に居座るわけ?

<細かいこと気にしないの。この方が画面が見やすいんだから。>
お前はシャナタンか!!

<何ソレ? てか何でファイル処理?>
オホン!気を取り直して。UWSCでファイル処理と言えばテキストファイル処理が中心になる。
だが、掲示板でも意外に多くは語られていない。そこでチョコットやってみようかと。

<でも、わざわざ授業形式にすることはないわね。>
単なる気分だよ気分。

<それで、ヘルプに書かれているようなことをダラダラ説明するワケ?>
そうだね基礎編だから仕方ないか。

<じゃあサッサと終わらせよう。>
では、ファイル関連の例に補足を入れるよ。

//CSVファイルの値を2倍して書き戻す
fid = FOPEN("TEST.CSV", F_READ or F_WRITE)     // ファイルオープン(読み書き両用モード)
For 行 = 1 to FGET(fid, -1)            // 行数分(FGET(fid, -1)で行数取得)
  For 列 =  1 to 3                // 3列
    atai = FGET(fid, 行, 列)           // GET(読み込み)
    if ChkNum(atai) then atai =  atai * 2   // 数字であれば2倍
    FPUT(fid, atai, 行, 列)            // PUT(書き込み)
  next
next
FCLOSE(fid)                       // ファイルクローズ

<ナンだ。チョビットだけじゃん!>
ソレが意外に重要なんだね。特に初心者には。単にファイルの読み取りだけならコンナ風だよ。

fid = FOPEN("TEST.CSV")                 // ファイルオープン(省略で読み取り専用)
For i = 1 to FGET(fid, -1)             // 行数分(FGET(fid, -1)で行数取得)
  Print FGET(fid, i)                 // 1行取得
next
FCLOSE(fid)                        // ファイルクローズ

<意外に簡単じゃん!>
これはUWSCだけなんだ。VBなどではこうなるよ。

Dim fileNo As Integer
Dim buf
fileNo = FreeFile 'ファイル番号の取得
Open "TESTFILE.TXT" For Input As #fileNo 'ファイルを読込モードで開く
Do Until EOF(fileNo) 'EOFになるまでループ
Line Input #fileNo, buf 'ファイルから1行読み込む
Debug.Print buf
Loop
Close #fileNo

又はクラスを用いて

Dim Reader As New IO.StreamReader("C:Test.txt", System.Text.Encoding.GetEncoding("Shift-JIS"))
Do Until Reader.EndOfStream
ListBox1.Items.Add(Reader.ReadLine)
Loop
Reader.Close()

<EOFって何だったっけ?>
End Of Fileの略。ファイルの終端を示す特殊なデータのこと。 UWSCではEOFを意識させないようになっている。
またテキストに特化して簡単かつ強力に処理できるようになっている。

<なるほろ~UWSCが一番簡単だわね。・・で強力とは?>
特にCSV(カンマ区切り)と組み合わせると、行,列で指定で来るので、まるで配列のように扱える。
VB等とはエライ違いだ!

<そ~だったんた。 コレを使わない手は無いわね!>
その通り!


----------------------------------------------------------------------

提供は: テキストに強いUWSC!  お酒に弱いLinersでした。

----------------------------------------------------------------------