The Delphi Bug List

Entry No.
659
VCL - 一般 - クラス - THandleStream
THandleStream.Size をセットすると、ファイル位置がストリームの最後に移動する
1.02 2.01 3.0 3.01 3.02 4.0 4.01 4.02 4.03 5.0 5.01 6.0 6.01 6.02 Kylix 1.0
N/A N/A Gotcha Gotcha Gotcha Gotcha Gotcha Gotcha Gotcha Gotcha Gotcha Gotcha Gotcha Gotcha Gotcha
解説
Reported by Arsene von Wyss; checked by Jordan Russell
Jordan Russell:
この振る舞いについて THandleStream.Size のヘルプには何も記述してありませんが、THandleStream.SetSize を見るとそれが書かれていることが分かります。しかしながら、ファイル位置が最初の場所から移動する理由は何もありません。
ユーザーからのコメント
Ficedula
16 Jun 2001  02:22 AM GMT
考えられる理由:TStream の read メソッド GetSize は、ストリームのサイズを知るために Position プロパティを呼びます。その手順は次の通りです。
- ストリームの最後に移動するために Seek(0, soFromEnd) を呼ぶ
- (この時点でストリームサイズになっている) Position を読み取る
- 元に位置に戻るために、再び Seek を呼ぶ

明らかに THandleStream では位置が復元されません。おそらく何らかの理由で Size プロパティをオーバーライドしているか、Seek() に問題がある(こちらの方が可能性が高い)ためでしょう。
Latest update of this entry: 2001-06-16
本家 The Delphi Bug List のエントリーはこちら
The Delphi Bug List 日本語訳 へ