fileread

【Tera Term マクロ言語】コマンドリファレンス

fileread 機能

[ファイル操作コマンド]

ファイルを読みます。

コマンドライン

fileread <file handle> <read byte> <strvar>

機能説明

開いているファイル <file handle> から、<read byte> で指定したバイト数のデータを読みこんで <strvar> に格納します。
<file handle>
fileopen でファイルハンドルを取得しているファイルを <file handle> にて指定します。
<read byte>
読み込むバイト数を指定します。
値の範囲は 1 から 511 でなければなりません。

ファイルポインタは読み込んだバイト数分進められます。
データを読み込み終わる前にファイルポインタがファイルの終わりまで行った場合は、システム変数 <result> に 1 が格納されます。
それ以外は、<result> に 0 が格納されます。
<strvar>
読みこんだデータを <strvar> に格納します。

パラメータの説明

指定するパラメータは以下の通りです。
パラメータパラメータ説明
<file handle>整数ファイルハンドルを指定します。
<read byte>整数1~511 byte を指定します。
<strvar>文字列変数名を指定します。

対象バージョン

バージョン 4.48 以降で利用可能です。

戻り値

戻り値として以下の変数が定義されます。
変数名意味
result0データを読み込み終わる前にファイルポインタがファイルの終わりまで行かなかった
1データを読み込み終わる前にファイルポインタがファイルの終わりまで行った
<strvar>文字列読み込んだ文字列
<strvar> は、コマンド実行時に指定した任意の文字列です。

関連コマンド

種別:ファイル操作Ver機能の簡易説明
filecloseファイルハンドルを閉じる。
fileopenファイルを開く。

使用方法

使用例

・10 byte ずつ読み込む場合
filename = 'foo.txt'

fileopen fp filename 0

:loop
fileread fp 10 data
messagebox data filename
if result goto fclose
goto loop

:fclose
fileclose fp
・バイナリファイルの先頭から32バイトを読み込み、ホストへ送信する場合
; バイナリファイルの先頭から32バイトを読み込み、ホストへ送信する。
filename = 'sample.bin'

fileopen fhandle filename 0
if fhandle == -1 goto the_end

call send_16_bytes      ; send first 16 bytes
fileseek fhandle 16 1   ; seek past next 16 without sending
call send_16_bytes      ; send next (last) 16 bytes
fileclose fhandle
goto the_end
 
;#########################################
:send_16_bytes
    for i 1 16
        fileread fhandle 1 str      ; read one byte at a time so we can detect zero.
        if result == 1 break
        str2code integer str        ; if zero then str will be empty and integer will be set to zero
        ;sprintf 'integer = 0x%02X' integer
        ;messagebox inputstr 'test'
        send integer
    next
return
;#########################################
:the_end

サンプル

以下のサンプルが存在します。

備考

特にありません。