FileReadStruct 関数
この関数は、binファイルからパラメータとして渡された構造体に、ファイルポインタの現在位置から構造体データ (文字列、動的配列、仮想関数を除く) の内容を読み取ります。
読み取るファイルの指定は、FileOpen関数によって取得されるファイルハンドルを使って行ないます。
データ型と構成・戻り値
uint FileReadStruct(①, ②, ③);
戻り値は、処理が成功した場合は、読み取ったバイト数を返します。エラーの場合は 0を返します。読み取ったバイト数は構造体の大きさに対応します。
発生するエラーについては、GetLastError関数で取得することができます。
引数 [3]
FileReadStruct関数は 3個の引数で構成されます。
番 号 | 引数名 | データ型 | 単位 | 初期値 | 説明 |
---|---|---|---|---|---|
① | file_handle | int | - | - | FileOpen関数によって取得されるファイルハンドル。 |
② | struct_object | const void& | - | - | ファイル内の構造体を読み取るための構造体。構造体のデータに文字列、動的配列、仮想関数を含めることはできません。 |
③ | size | int | - | -1 | 読み取るバイト数。初期値の「-1」は構造体全体を読み取ります。 |
使用例
FileReadStruct関数による binファイル内の構造体の読み取り
FileReadStruct関数を使って指定した binファイル内の構造体のデータを読み取ります。書き込む構造体は「MyStruct1」、これを読み出す時に使用する構造体を「MyStruct2」とします。
読み取ったファイルの場所については FileOpen関数のページで確認してください。
コード
// FileReadStruct関数による binファイル内の構造体の読み取り
#property strict
void OnInit() {
string filename = "test.bin"; // ファイル名
int handle; // ファイルハンドル
handle = FileOpen(filename, FILE_READ | FILE_WRITE | FILE_BIN );
struct MyStruct1 // ファイルに書き込む構造体
{
double price;
datetime time;
};
MyStruct1 my_struct1;
my_struct1.price = Bid;
my_struct1.time = TimeLocal();
FileWriteStruct(handle, my_struct1);
FileSeek(handle, 0, SEEK_SET); // ファイルポインタの位置を先頭に移動
struct MyStruct2 // ファイルの構造体データを読み出す構造体
{
double price;
datetime time;
};
MyStruct2 my_struct2;
uint b = FileReadStruct(handle, my_struct2, -1);
Print("読取バイト数:", b);
Print("読取Bid値:", my_struct2.price);
Print("読取時刻:", my_struct2.time);
FileClose(handle);
}
コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)