シーケンシャルファイルの操作について(VB6)

解決


難しいです  2008-05-25 23:21:00  No: 139768

皆様はじめまして。

最近VBをはじめたもので、参考書、ネットを見ましたが、載っていませんでしたので、ご教授頂けたらと思います。

VB6でシーケンシャルファイルアクセスの、良い書き込み方法を教えて頂きたいのです。

ソースは下記です。

dim strFilePath as string
dim lngFno as long
dim strWriteData(100) as string
dim datDate as Date

    strFilePath = "C:\Data\Data.dat"

    For i = 0 to 100
        strWriteData(i) = i + 1
    Next i

    datDate = Now

    'ファイル書込
    lngFno = FreeFile
    
    If Dir(strFilePath, vbNormal) = "" Then
        Open strFilePath For Output As #lngFno
    Else
        Open strFilePath For Append As #lngFno
    End If
    
    Write #lngFno, datDate,strWriteData(0),strWriteData(1),strWriteData(2),strWriteData(3)・・・・・・・strWriteData(100)

    Close #lngFno

上記のような感じです。

質問なのですが、ファイルアクセスの  「write  #lngFno・・・・」の部分が問題です。

せっかく配列strWriteData(100)に書き込むデータが入っているのに、「strWriteData(0),strWriteData(1),strWriteData(2),・・・」と配列番号0から100まで、1つずつ記載しなければ、作成(追記)されたファイルの中身は1行になってくれないのでしょうか?

希望するファイルの内容↓です。
"2008/5/25 16:16:25","1","2","3","4",・・・・・"101"
"2008/5/25 16:18:25","1","2","3","4",・・・・・"101"
"2008/5/25 16:19:25","1","2","3","4",・・・・・"101"
  ※strWriteDataの中身は、質問用のデータですので、本物は様々な数値が入ることになります。

以上、どなたか宜しくお願い致します。


VBレスキュー(花ちゃん)  2008-05-25 23:50:54  No: 139769

下記のような事をお望みでしょうか?
 Write #lngFno, datDate,
 For i=0 to 99
    Write #lngFno, strWriteData(i),
 Next i
 Write #lngFno, strWriteData(100)


難しいです  2008-05-26 00:45:06  No: 139770

VBレスキュー(花ちゃん)さん

まさにその通りです。
ありがとうございます。

同じように読み込みは・・・

input #lngFno, datDate,
 For i=0 to 99
    input #lngFno, strWriteData(i),
 Next i
input #lngFno, strWriteData(100)

でできるのかな・・・

やってみます。


難しいです  2008-05-27 16:42:53  No: 139771

1行ずつで取得して、カンマで分解していくしかないのか・・・

一応手法が分かったので、解決としておきます。


通ってみた  2008-05-28 14:15:45  No: 139772

For i=0 to 100
    Input #lngFno, strWriteData(i)
 Next i

Inputはカンマで区切って読み込むと思いますが


VBレスキュー(花ちゃん)  2008-05-28 15:16:41  No: 139773

>1行ずつで取得して、カンマで分解していくしかないのか・・・

読み込みなら、ADO や DAO を使って読み込んだ方が数倍早く処理ができます。


難しいです  2008-05-30 22:42:20  No: 139774

通ってみたさん、VBレスキュー(花ちゃん)さん
2日間外出しておりレスおそくなりましたけど、ありがとうございます。

"2008/5/25 16:16:25","1","2","3","4",・・・・・"101"
"2008/5/25 16:18:25","1","2","3","4",・・・・・"101"
"2008/5/25 16:19:25","1","2","3","4",・・・・・"101"

というファイル内容なので、strReadData(i,j)という配列に入れてみようと思ったのです。
  ※i:行番号、j:列データ

読み込みの方は、質問の内容が違いました。
まことに申し訳ありません。

1行ずつline  inputでreadして、カンマで区切るしかないのかな・・・?と思っております。

スマートではないかもしれませんが、とりあえずこの方法でできましたので、ご報告致します。

また分からないことが発生したので、別のスレッドを立てさせて頂こうかと思います。

以上、ありがとうございました。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加