请教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。
...全文
271 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
sundayzhao 2014-10-27
  • 打赏
  • 举报
回复
你看一下源码,filestream.seek最终调用SetFilePointer函数,这个函数要求便宜量为integer,你传入的64位可能太大了,所以不准确,或者windows中病毒了,系统函数就不正确。呵呵 可以考虑用TStringStream,就可以了

16,747

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧