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