gpt4 book ai didi

Delphi TFileStream.Seek,如何检查无效的查找偏移量

转载 作者:行者123 更新时间:2023-12-03 18:39:24 28 4
gpt4 key购买 nike

我在 Delphi 2006 中使用 TFileStream。当我使用超出范围的偏移量调用 TFileStream.Seek 时,我得到不同的返回值。当我寻找低于流开头的位置时,该函数返回 -1,如果我寻找超出流大小的位置,则该函数返回如果流那么大,该位置将是流中的位置。有没有办法检查流上的查找操作是否成功?为什么当查找偏移量超出当前流大小的范围时 TFileStream.Seek 不会失败?

提前致谢。

最佳答案

是的,您可以在文件大小之外进行搜索 - 这里没有错误,搜索成功。不仅如此,您还可以锁定超出文件大小的文件区域(参见 LockFile )——这也是可以的,某些 RDBMS 使用它来实现表/记录锁定。

同样来自 MSDN:

It is not an error to set a file pointer to a position beyond the end of the file. The size of the file does not increase until you call the SetEndOfFile, WriteFile, or WriteFileEx function. A write operation increases the size of the file to the file pointer position plus the size of the buffer written, which results in the intervening bytes uninitialized.



因此,通过将文件指针设置为超出文件大小,您可以随后增加文件大小(例如通过 SetEndOfFile)。

关于Delphi TFileStream.Seek,如何检查无效的查找偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3300938/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com