構造体をbinファイルへ書込 FileWriteStruct 関数

関数

ファイル関数

FileWriteStruct 関数

この関数は、開いている binファイルファイルポインタの現在位置から指定した構造体データ (文字列、動的配列、仮想関数を除く) を書き込みます。

書き込むファイルの指定は、FileOpen関数によって取得されるファイルハンドルを使って行ないます。

データ型と構成・戻り値

uint FileWriteStruct(①, ②, ③);

戻り値は、処理が成功した場合は、書き込んだバイト数を返します。エラーの場合は 0を返します。書き込まれたバイト数は構造体の大きさに対応します。

発生するエラーについては、GetLastError関数で取得することができます。

引数 [3]

FileWriteStruct関数は 3個の引数で構成されます。


引数名データ型単位初期値説明
file_handleintFileOpen関数によって取得されるファイルハンドル
struct_objectconst void&ファイルに書き込む構造体。構造体のデータに文字列、動的配列、仮想関数を含めることはできません。
sizeint-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);
}

コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)

結果

タイトルとURLをコピーしました