请教TFileStream.Seek函数为啥定位总不正确。

dreamnyj 2014-10-25 10:43:52
FileStream := TfileStream.create(OpenDialog1.FileName,fmOpenRead );//正常


fileStream.Seek($0,soBeginning );
fileStream.Read(Buffer,100);//个人理解是从0处读可是不是,如果换成soCurrent 就会从0处读

fileStream.Seek($200,soBeginning);// 理解是从开始位 offset 0x200开始读,结果不知道读那去了。但是如果换成Socurrent就正常了。理论上,前面已经读到了100,这里不是0X300了?
fileStream.Read(Buffer,100);

fileStream.Seek($500,soBeginning);//理解,offset 0x500开始读,结果不知道读到那里,但我用ultraEdit步0x500,一定不是读的内容。

fileStream.Read(Buffer,100);

//TMD 为什么Seek函数总是不能正常的定位?


引用到VCL中这样定义:
type
{ TStream seek origins }
TSeekOrigin = (soBeginning, soCurrent, soEnd);


求指教,使用版本D7。
...全文
209 点赞 收藏 1
写回复
1 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
sundayzhao 2014-10-27
你看一下源码,filestream.seek最终调用SetFilePointer函数,这个函数要求便宜量为integer,你传入的64位可能太大了,所以不准确,或者windows中病毒了,系统函数就不正确。呵呵 可以考虑用TStringStream,就可以了
回复
发帖
语言基础/算法/系统设计
创建于2007-08-02

1.6w+

社区成员

Delphi 语言基础/算法/系统设计
申请成为版主
帖子事件
创建了帖子
2014-10-25 10:43
社区公告
暂无公告