delphi – 与TStream.Seek相比的TStream.Position
发布时间:2020-12-15 09:50:26 所属栏目:大数据 来源:网络整理
导读:要在TStream类中移动“当前字节”指针,我们可以使用属性Position(例如MyStream.Position:= 0)或使用Seek方法(例如MyStream.Seek(0,soFromBeginning).问题是,哪一个更有效(又快点??(我没有源,所以我自己无法检查). 到目前为止,我总是使用Seek定位指针. 解
要在TStream类中移动“当前字节”指针,我们可以使用属性Position(例如MyStream.Position:= 0)或使用Seek方法(例如MyStream.Seek(0,soFromBeginning).问题是,哪一个更有效(又快点??(我没有源,所以我自己无法检查).
到目前为止,我总是使用Seek定位指针. 解决方法
由于TStream.Seek是一个处理32位或64位值的重载函数,它取决于当前的流实现,这可能是更好的选择.
例如,TCustomMemoryStream实现了32位版本的Seek().当您在该流上设置Position时,它将首先调用64位版本,该版本在调用32位版本时将值转换为Longint. (这可能会随着64位版本的Delphi而改变!) 另一方面,THandleStream实现了64位版本的Seek().当您使用32位值调用Seek()时,您最终会调用一个非常讨厌的机制来调用64位版本. 我个人的建议是设定位置.至少它将来是更好的选择. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |