■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#19367-0固定長のファイルの読み込み、書込み宙ぶらりん2001-03-06(火) 10:47
     #19369-0RE#19367:固定長のファイルの読み込み、書込みゆう(U)2001-03-06(火) 11:13
     #19372-0RE#19369:固定長のファイルの読み込み、書込み宙ぶらりん2001-03-06(火) 12:26
     #19373-0RE#19372:固定長のファイルの読み込み、書込みよねKEN2001-03-06(火) 13:21
     #19375-0RE#19372:固定長のファイルの読み込み、書込みゆう(U)2001-03-06(火) 13:33
     #19378-0RE#19375:固定長のファイルの読み込み、書込みゆう(U)2001-03-06(火) 14:06
     #19382-0固定長のファイルの読み込み、書込み (お礼) 宙ぶらりん2001-03-06(火) 15:45
#19367-0
固定長のファイルの読み込み、書込み
VB5を使っています。
今回初めてファイル操作に挑戦します。
一応ヘルプでファイルの書込み・読み込みの
部分を読んだのですが、難しく理解できませんでした。
どなたか、固定長のファイルの読み込みの書き方、
書込みの書き方、その時に注意することなど
分かりやすく教えて頂けないでしょうか。
よろしくお願いします。
#19369-0
RE#19367:固定長のファイルの読み込み、書込み
> 一応ヘルプでファイルの書込み・読み込みの
> 部分を読んだのですが、難しく理解できませんでした。
> どなたか、固定長のファイルの読み込みの書き方、
> 書込みの書き方、その時に注意することなど
> 分かりやすく教えて頂けないでしょうか。
とりあえず基本はファイルを
開き
読み(書き)
閉じる
です。

ヘルプ「ファイル, 入出力」などで
Open/Get/Put/Close/EOF
に付いて読んでみてください。

習うより慣れろ・・・で、いろいろと試してみては?

※ヘルプがまったく分からないとは思えないので
 分からない部分を抜き出して質問してみるとか
#19372-0
RE#19369:固定長のファイルの読み込み、書込み
> 開き
> 読み(書き)
> 閉じる
> です。
> ヘルプ「ファイル, 入出力」などで
> Open/Get/Put/Close/EOF
> に付いて読んでみてください。
> 習うより慣れろ・・・で、いろいろと試してみては?

ゆう(U) さん早速のご教授ありがとうございますm(__)m
ご指摘を受けたヘルプの個所を読み、使用例を使って
自分なりに試してみました。
なんとなく使い方がわかったのですが、読み込みのところで
なぜそうなるか分からない部分がありました。  

以下は例題をそのまま利用して、OPENの指定だけを変えただけの文です。
[書き出し部分]
Private Sub Command1_Click()
  Open "C:\Wawawa\test\TESTFILE" For Output As #1   ' シーケンシャル出力モードで開きます。
  Print #1, "これはテストです。"    ' ファイルに文字列を書き込みます。
  Print #1, ' ファイルに空白行を挿入します。
  Print #1, "印字領域 1"; Tab; "印字領域 2"  ' 2 つの印字領域に分けて書き込みます。
  Print #1, "皆さん"; " "; "こんにちは"    ' 文字列の間にスペースを挿入します。
  Print #1, "スペース 5 文字"   ' 文字の前にスペースを 5 個挿入します。
  Print #1, "こんにちは"    ' 10 桁目に文字列を印字します。
  Close #1
End Sub
→ これを実行させ、エディタで見た場合

これはテストです。

印字領域 1        印字領域 2
皆さん こんにちは
スペース 5 文字
こんにちは

となっていました。



[読み込み部分]
Private Sub Command2_Click()
Dim MyString, MyNumber

  ' サンプル ファイルを ランダム アクセス モードで開きます。
  Open "C:\wawawa\test\TESTFILE" For Input As #1

  Do While Not EOF(1)    ' ファイルの終端までループを繰り返します。
    Input #1, MyString, MyNumber    ' データを 2 つの変数に代入します。
    Debug.Print MyString, MyNumber       ' デバッグ ウィンドウに表示します。
  Loop
  Close #1        ' ファイルを閉じます。

End Sub

1行読み込むところで、変数を2つ使っているのですが
MyStringには、
             これはテストです。
             印字領域 1        印字領域 2
             スペース 5 文字
MyNumberには、
             皆さん こんにちは
             こんにちは

と入っていたのですが、どうしてこのような入りかたに
別れるのかがわからないのです。
DO 〜 LOOPで1行ずつ読んでいるのに、1回目で
MyNumberは2行目のデータをもってきているのです。
変数1つだけで作ってしまえばいいのですが、
どうしても気にかかるので教えて下さい。
よろしくおねがいします。
#19373-0
RE#19372:固定長のファイルの読み込み、書込み
>   ' サンプル ファイルを ランダム アクセス モードで開きます。
>   Open "C:\wawawa\test\TESTFILE" For Input As #1

これはランダムアクセスモードではない普通のシーケンシャル入力モードです。
Openステートメントのヘルプの使用例をご覧ください。
それぞれの場合のファイルの開き方が載っています。

>   Do While Not EOF(1)    ' ファイルの終端までループを繰り返します。
>     Input #1, MyString, MyNumber    ' データを 2 つの変数に代入します。
行単位で読み込むなら、Input #ではなくLine Input #です。
使い方はLine Inputのヘルプをご覧になって下さい。
#19375-0
RE#19372:固定長のファイルの読み込み、書込み
1: これはテストです。
2: 
3: 印字領域 1        印字領域 2
4: 皆さん こんにちは
5: スペース 5 文字
6: こんにちは
このテキストを・・・

> MyStringには、
>              これはテストです。
>              印字領域 1        印字領域 2
>              スペース 5 文字
> MyNumberには、
>              皆さん こんにちは
>              こんにちは
MyStringは奇数行目
MyNumberは偶数行目

という感じですね・・・

本来Inputは「,」カンマで区切られたCSV等を読み込むのに便利なように
用意されたステートメントです(確認されたように改行でも区切られます)。
※ただ、全角の「,」や「"」等でも区切られる?(確認してみてください)
 のでLine Inputで1行単位に読み込みコードで項目を
 区切り使用するのが一般的でしょう


>   ' サンプル ファイルを ランダム アクセス モードで開きます。
>   Open "C:\wawawa\test\TESTFILE" For Input As #1
これはランダムアクセスではなくInput(読み込み)モードです、
Randomがランダム アクセス モードです。

シーケンシャル アクセスがある程度理解できたら、今度は
バイナリ モード (Binary)&Put/Getに挑戦してみては?


ちなみに最終的にはファイル番号はFreeFileを使用した方がいいです。
※テストの段階では #1 は楽ですが・・・
#19378-0
RE#19375:固定長のファイルの読み込み、書込み
VB6.0であればMSDNライブラリの
Visual Basic ドキュメント
└Visual Basic の使用方法
 └プログラミング ガイド
  └Visual Basic を使ってできること
   └ドライブ、フォルダ、ファイルの処理
    └従来のファイル入出力ステートメントおよび関数によるファイルの処理

各ファイルアクセス方法の説明があります。

VB5.0ということなので BooksOnLine にその説明があると思います。
※若干名称が異なっているかもしれませんが・・・

※他に「Visual Basic の基本」というのもあります、
 ある程度VBを理解されてから読み直すとさらに理解が
 深まるかと・・・

> ※ただ、全角の「,」や「"」等でも区切られる?(確認してみてください)
「"」は嘘でした・・・
#19382-0
固定長のファイルの読み込み、書込み (お礼)
よねKEN さん、ゆう(U) さん
親切なご指導ありがとうございます。
どうもファイル制御というのは「難しそう」という
感じがあったのですが、すこし楽になりました。
シーケンシャルがある程度使えるようになったら
バイナリやランダムの勉強もしたいと思います。
このページと関連する記事:
#18295-0固定長文字列のファイル書き込み2000-03-21(火) 23:34
#984-2シェアウェアでよく見るパスワード設置法<2>2001-11-04(日) 11:01
#11058-0テキストファイルを読み込む2000-09-01(金) 17:12
#3643-0Inputモードで開いているファイルの現読みこみ位置の取得1999-08-22(日) 13:20
#29014-0使い方を教えて下さい。2000-08-31(木) 11:51
#2135-1ファイルの読み込み1999-07-27(火) 16:51
#597-0ファイルの扱い方。1999-08-06(金) 16:17
#23795-0VB複数FD交換時PUT関数がエラー2001-10-17(水) 16:24
#508-3テキストファイルを一気に読み込みたい。2003-12-05(金) 20:54
#44790-0ファイル途中にあるEOFの扱いについて2001-07-07(土) 12:42
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)