前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3

18.6. SFXMemory クラス

SFXMemory クラスは、メモリストレージを表すクラスです。

メモリストレージへのデータの読み書きは、 SFXMemory クラスを使用して以下の手順で行います。

■ SFXMemory クラスの使用手順

  1. SFXMemory インスタンス(SFXMemory ストレージ)を生成します。
  2. SFXMemory::Open 関数を呼び出して SFXMemory ストレージを開きます。
  3. SFXMemory::GetStreamReader / SFXMemory::GetStreamWriter 関数を呼び出してストリームを取得します。
  4. ストリームを利用して SFXMemory ストレージに対してデータを読み書きします。
  5. ※ストリームを利用しない場合は、SFXMemory::Read / SFXMemory::Write 関数を呼び出してデータを読み書きします。
  6. SFXMemory::Close 関数を呼び出して SFXMemory ストレージを閉じます。
[Note] メモリポインタ

SFXMemory クラスは、読み書き用のメモリポインタを 1 つ持ちます。 SFXMemory::Read / SFXMemory::Write 関数は、 メモリポインタの現在位置からデータを読み込み / 書き込み、その分メモリポインタを移動します。

SFXMemory::Seek / SFXMemory::SeekStart / SFXMemory::SeekEnd 関数を呼び出してメモリポインタを移動することも可能です。

また、ストリームを利用して読み書きする場合も、 読み書きしたデータ量に応じてメモリポインタは移動します。

例 18.6. 初期処理

SFXMemory memory;

// 空のメモリを開く ( サイズは 0 )
memory.Open();

// 指定した値を内部バッファに持つメモリを開く
memory.Open("data buffer", 11);

// メモリ読み込み用ストリームとメモリ書き込み用ストリームを取得する
memory.GetStreamReader(&reader);
memory.GetStreamWriter(&writer);

// ストリームに対して読み書きする

...

[Note] 注意
SFXMemory インスタンスを作成し、メモリを開く方法は 2 種類あります。

例 18.7. 終了処理 1

// メモリを閉じる ( 内部バッファは空になる )
memory.Close();

以下のようにして、メモリを閉じるときにその内容を指定した変数に格納できます。

例 18.8. 終了処理 2

SFXBuffer buffer; // メモリストレージの内容を格納するバッファ
SFCError error;   // エラー値

// メモリを閉じる(内部バッファは buffer 変数にコピーされて空になる)
// ※ この場合、エラー値を返すことに注意
error = memory.Close(&buffer);