皆様はじめまして。
最近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の中身は、質問用のデータですので、本物は様々な数値が入ることになります。
以上、どなたか宜しくお願い致します。
下記のような事をお望みでしょうか?
Write #lngFno, datDate,
For i=0 to 99
Write #lngFno, strWriteData(i),
Next i
Write #lngFno, strWriteData(100)
VBレスキュー(花ちゃん)さん
まさにその通りです。
ありがとうございます。
同じように読み込みは・・・
input #lngFno, datDate,
For i=0 to 99
input #lngFno, strWriteData(i),
Next i
input #lngFno, strWriteData(100)
でできるのかな・・・
やってみます。
1行ずつで取得して、カンマで分解していくしかないのか・・・
一応手法が分かったので、解決としておきます。
For i=0 to 100
Input #lngFno, strWriteData(i)
Next i
Inputはカンマで区切って読み込むと思いますが
>1行ずつで取得して、カンマで分解していくしかないのか・・・
読み込みなら、ADO や DAO を使って読み込んだ方が数倍早く処理ができます。
通ってみたさん、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して、カンマで区切るしかないのかな・・・?と思っております。
スマートではないかもしれませんが、とりあえずこの方法でできましたので、ご報告致します。
また分からないことが発生したので、別のスレッドを立てさせて頂こうかと思います。
以上、ありがとうございました。