MetaTrader 5 / ライブラリ

CFastFile - 仮想ファイルとしてuchar配列を扱うためのクラス - MetaTrader 5のためのライブラリ

---
849
(39)

CFastFileは、ディスク上の物理ファイルへのデータの中間書き込みの必要性を排除します。データの取り扱いは大幅に加速されます。

これは、標準のFileWriteXXX/FileReadXXX関数に似た関数を持っています。よって、物理的なファイルの使用からメモリ内の「仮想」ファイルの高速作業への移行は簡単です。データストレージおよび読み取り/書き込みは物理的なファイルの代わりにuchar配列の使用に基づいています。

関数のリストは下記の通りです。

    CFastFile(uchar &data[]); // 配列からのファイルデータの初期化を持つコンストラクタ     void Clear();  // ファイルをクリアする        //--- プロパティ操作の関数     void Delim(uchar delim=';'); // CSVモードでデリミタ(データの区切り)を設定する     int Size(); // ファイルサイズを取得する     int Tell(); // 現在位置を取得する     void Seek(int offset, int origin); // 検索     bool IsEnding(); // ファイルの最後(EOF)のチェック     bool IsLineEnding();  // 行の最後のチェック     //--- ファイルにデータを書き込むための関数     uint WriteArray(uchar &src[], uint src_start=0, int src_cnt=WHOLE_ARRAY); // uchar配列を書き込む     uint WriteDouble(double v);  // doubleを書き込む     uint WriteFloat(float v);     uint WriteLong(long v);     uint WriteInt(int v);     uint WriteShort(short v);     uint WriteChar(char v);     uint WriteInteger(int v, int sz=INT_VALUE); // integerを書き込む - 標準のFileWriteIntegerとの互換性     uint WriteString(string v, int cnt); // stringを書き込む。 cnt=-1はCSVモードを意味し \r\nが追加される        //--- ファイル読み込みの関数     uint ReadArray(uchar &dst[], uint dst_start=0, int cnt=WHOLE_ARRAY); // 配列を読み込む     double ReadDouble();  // doubleを読み込む     float ReadFloat();      long ReadLong();     int ReadInt();     short ReadShort();     char ReadChar();     int ReadInteger(int sz=INT_VALUE); // integerを読み込む - 標準のFileReadIntegerとの互換性     double ReadNumber(); //     string ReadString(int cnt);  stringを読み込む。cnt=-1 はCSVモードを意味し、デリミタ(データの区切り)までが読み込まれる        //--- データ保存関数     uint Save(uchar &v[]);  // ファイルをuchar配列に格納する     uint Save(int h); // ファイルを本当のディスクファイルに格納するh - ファイルハンドル(ファイルは開かれている必要がある)     uint Save(string file);  // ファイルを本当のディスクファイルに格納する file - ファイル名     //--- データ読み込みの関数     uint Load(uchar &v[]); // ファイルをuchar配列から読み込む     uint Load(int h);  // データを本当のディスクファイルから読み込むh - ファイルハンドル(ファイルは開かれている必要がある)     uint Load(string file); // データを本当のディスクファイルから読み込むfile - ファイル名 

関数は標準的なファイル操作関数と似た名前を持つことにお気づきかと思います。

物理的なファイルからCFastFileへの移行はごく簡単です。ファイルを開いてハンドル(例えばint h)を取得する代わりに

CFastFile f; 

のようにCFastFileクラスインスタンスを作成します。次に従来のファイル関数を次の規則に従って変換します。

FileWriteDouble(h, 10)  ->  f.WriteDouble(10) 

便宜上Save/Load関数が追加されており「仮想」ファイルデータの物理的なディスクファイルでの save/loadが可能です。

CFastFileクラスの実証の例が含まれています。


MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/845