ショートフォーム:ポインタからストリームを作成することは可能ですか?ポインタをデルファイでインクリメント/ポインタからストリームを作成
私は、読みたいファイルデータを指すポインタを持っています。 WriteBuffer()を使用してポインタからTFileStreamにデータを転送しました。これは動作します。しかし、今度はプログレスバーを表示するためにそれを賢明に読んでみたい。ですから、私はそれを段階的に読む必要があります。
私は選択肢にあります
1)ポインタのバフをインクリメントし、いつものように)WriteBufferメソッドを(使用しています。 (WriteBufferは常に先頭から読み込みますので、ポインタをインクリメントする必要があります)
2)ポインタからストリームを作成します。これは可能ですか?
コード:
var InputStream : TMemoryStream;
Buff: Pointer;
Header: TOCHeader;
begin
// Here I get the pointer
Size := GetOverlay(Buff);
// Transfer data to memory stream
InputStream.WriteBuffer(Buff^, SizeOf(Header));
InputStream.Seek(0, soFromBeginning);
// Read the header
InputStream.ReadBuffer(Header, SizeOf(Header));
// Increment the pointer. Doesn't work :-(. Message Ordinal type required
Inc(Buff, SizeOf(TOC));
あなたはあなたのコード内の2つのInputStream変数を持っています。あなたはそれを読んでそれに書きます。明確にできますか? – mghie
ああ、すみません。私はそれを修正しました。私は重要な変数とコードフレーズをコピーしたところで、InputStreamの定義は非常に重要であるようです。 – Simon
ストリームへの書き込みと読み出しの間で、ストリームの位置をリセットする必要があることに注意してください。現在のコードでは例外が発生します。 – mghie