Module
Contents
Index 🔎︎

# Put Statement

相対編成ファイルへの 1 つのレコードの書き込みおよび、バイナリファイルへの 1 つのバイトシーケンスの書き込みが行えます。

次も参照してください: Get ステートメント

## 構文:

    Put [#] FileNumber As Integer, [position], Variable

## パラメーター:

FileNumber: 書き込むファイルを指定する整数表式。

Position:相対編成ファイル (ランダムアクセスファイル) の場合は、書き込むレコードの番号。

バイナリファイル (バイナリアクセス) の場合は、ファイル中の書き込みを開始するバイト位置。

Variable: ファイルに書き込む変数の名前。

相対編成ファイルでの注意： この変数の内容が Open ステートメントの Len句で指定されたレコード長と一致しない場合、 新たに書き込まれたレコードの末尾から次のレコードまでの間の空間は、書き込み先ファイルの既存データで埋められます。

バイナリファイルについては、下記の点に注意が必要です。ここで指定する変数の内容は、指定位置から書き込みが開始され、データの最終バイトの次にファイルポインターが移動します。レコードの間に、スペースが残されることはありません。

## 例:

    Sub ExampleRandomAccess

    Dim iNumber As Integer

    Dim sText As Variant REM バリアント型変数が必要

    Dim aFile As String

        aFile = "c:\data.txt"

        iNumber = Freefile

        Open aFile For Random As #iNumber Len=32

        Seek #iNumber,1 REM 書き込み開始位置

        Put #iNumber,, "ここはテキストの始めの行です。" REM テキストで行を埋める

        Put #iNumber,, "This is the second line of text"

        Put #iNumber,, "This is the third line of text"

        Seek #iNumber,2

        Get #iNumber,,sText

        Print sText

        Close #iNumber

        iNumber = Freefile

        Open aFile For Random As #iNumber Len=32

        Get #iNumber,2,sText

        Put #iNumber,,"This is new text"

        Get #iNumber,1,sText

        Get #iNumber,2,sText

        Put #iNumber,20,"This is the text in record 20"

        Print Lof(#iNumber)

        Close #iNumber

    End Sub