FreeBASIC マニュアルのトップに戻る

FreeBASIC Random

目次→実行時ライブラリー参考→ファイル入出力関連RANDOM←オリジナル・サイト

RANDOM 左にメニュー・フレームが表示されていない場合は、ここをクリックして下さい

←リンク元に戻る プログラム開発関連に戻る

ランダム・アクセス・モードで開くファイルまたは装置を指定します。

構文:
Open filename for Random [Access access_type] [Lock lock_type] as [#]filenum [Len = record_length]

パラメタ:
filename
開くファイル名
access_type
ファイルに対して、読むか、書くか、あるいは両方かを、指定します。
lock_type
ファイルが開いている間、使用を、ロックします。
filenum
オープン・ファイルに関連づける、未使用のファイル番号
record_length
ファイルに使用される記録のサイズ

記述:
filenum で指定した、ファイルか装置を、記録サイズ record_length で、バイナリ・データを読む、または、書くために、開きます。
ファイルが存在しないと、新しいファイルが作成されます。ファイルが存在すると、ファイルに存在するどんなデータも Open で保存されます。
ファイル・ポインタは、 Open で、ファイルの始め、レコード No.1で、初期化されます。
ファイル操作は、record_length バイトのステップで、ファイルの位置を動かします。
このファイル・モードは、ファイルの、全記録を読むか、または書くのに、ユーザが定義した Type バッファ変数を使用します。
バッファ変数は、いくつかの項目を含めるために使用します。
Get #Put # で、データはバイナリ・モードで保存されます。これは、FreeBASICが使うものと同じ内部形式です。

filename は、目標の OS に適合するファイル名をもたらす文字列表現にする必要があります。ワイルドカードは使えません。
経路を与えないと、現在のディレクトリでファイルを捜します。

Access_type - デフォルトで、Random モードは、ファイルの読み書きの両方ができます。Access タイプを指定する場合は、下のいずれかになります。

Lock_type は、他のプロセス(ユーザかスレッド)のためにファイルをロックする方法を指定します。以下の中の 1 つになります。

filenum は、現在開いている他のどのファイルにも使われていない、有効な FreeBASIC ファイル番号(1〜255の範囲)です。
ファイル番号は、以降のファイル操作で使うファイルを、特定します。
空いているファイル番号は、FreeFile 関数を使って見つけることができます。

record_length は、ファイル・ポインタが、各個々の GetPut のために動かすバイトの量です。それは、データを GetPut するときに使われるバッファ変数のサイズに合わなければなりません。
record_length を省略すると、デフォルトで、128 になります。

例:
'' この例は、テスト・ファイルを生成して、次に、
'' ファイルから読みながら、ランダムな指示に従って記録を表示します。

Type Entry
    slen As Byte
    sdata As String * 10
End Type

Dim u As Entry
Dim s As String

Open "testfile" For Random As #1 Len = SizeOf(Entry)

'' あらかじめ定めたデータで、9 つのレコードを書出します。
For i As Integer = 1 To 9
    Read s
    u = Type( Len(s), s )
    Put #1, i, u
Next

Data ".,-?!'@:", "abc",      "def"
Data "ghi",      "jkl",      "mno"
Data "pqrs",     "tuv",      "wxyz"

'' ユーザーに、索引番号を指定してもらって、記録を表示します。
Do
    Dim i As Integer
    Input "レコード番号(1 〜9)を入力して下さい。それ以外で終了します。: ", i
    If i < 1 Or i > 9 Then Exit Do

    Get #1, i, u
    Print i & ": " & Left( u.sdata, u.slen )
    Print
Loop

Close #1



Type ScoreEntry Field = 1
    As String * 20 Name
    As Single score
End Type

Dim As ScoreEntry entry

'' 偽の適当な量のファイルを生成する
Open "scores.dat" For Random Access Write As #1 Len = SizeOf(entry)
For i As Integer = 1 To 10
    entry.name = "Player " & i
    entry.score = i
    Put #1, i, entry
Next
Close #1

'' 登録したものを読み込んで表示する
Open "scores.dat" For Random Access Read As #1 Len = SizeOf(entry)
For i As Integer = 1 To 10
    Get #1, i, entry
    Print i & ":", entry.name, Str(entry.score), entry.score
Next
Close #1
Sleep




Type UDT 'ユーザ定義型を作成
    slen As Byte
    sdata As String * 10
End Type

Dim i As Integer
Dim s As String
Dim u As UDT

Dim ff As UByte
Dim fpos As Integer

ff = FreeFile
fpos = 10

Open "testfile.dat" For Random As #ff Len=SizeOf(UDT)
For i = 1 To 9
    Read s
    u = Type ( Len(s), s )
    Put #ff, i, u
Next

Do
    Input "レコード番号(1〜9)を入力して下さい。それ以外で終了します。: ", i
    If i < 1 Or i > 9 Then Exit Do
    Get #1, i, u
    Print i & ": " & Left ( u.sdata, u.slen )
    Print
Loop

Close #ff
End 0

Data ".,-?!'@:", "abc",      "def"
Data "ghi",      "jkl",      "mno"
Data "pqrs",     "tuv",      "wxyz"



QBからの違い:

参考:


ファイル入出力関連に戻る
←リンク元に戻る プログラム開発関連に戻る

ページ歴史:2019-01-12 09:23:39
日本語翻訳:WATANABE Makoto、原文著作者: SysOp

ホームページのトップに戻る

表示-非営利-継承