【发布时间】:2009-07-09 22:13:44
【问题描述】:
我们有一些古老的 Delphi 代码(甚至可能起源于 Turbo Pascal 代码)使用 {$I-},又名 {$IOCHECKS
OFF},这使得代码使用 IOResult 而不是磁盘 I 的异常/O 错误。
我想摆脱{$I-} 并将这段代码带到1990 年代,但要做到这一点,我想知道{$IOCHECKS OFF} 会影响什么。这只影响像AssignFile/Reset/Rewrite/Append/CloseFile这样笨拙的旧内置I/O函数吗?或者它是否也会影响更现代的东西,比如 TFileStream?更重要的是,还有什么我没有想到的可能会受到影响? (Delphi Basics 暗示它也会影响 MkDir 和 RmDir。如果它影响到这些,那么必须有更多。)
Delphi 2007 帮助主题“输入输出检查 (Delphi)”(ms-help://borland.bds5/devcommon/compdirsinput_outputchecking_xml.html) 说这会影响“I/O 过程[s]”,并且“I/O 过程在 Delphi 语言指南中进行了描述。 "这并没有多大帮助,因为 CodeGear 从未发布过语言指南,而 Borland 上一次发布语言指南是 Delphi 5。
{$I-} 下哪些函数和类的行为不同?
编辑:接受的答案提供了一些很好的背景,但这里是按字母顺序排列的列表形式的快速摘要:{$IOCHECKS OFF} 仅影响系统单元的以下例程。
- 追加
- 块读取
- 块写入
- ChDir
- 关闭文件
- Eof
- 埃隆
- 擦除
- 文件位置
- 文件大小
- 冲洗
- MkDir
- 阅读
- 阅读
- 重命名
- 重置
- 重写
- RmDir
- 寻找
- SeekEof
- SeekEoln
- 设置LineBreakStyle
- 截断
- 写
- 写
【问题讨论】:
标签: delphi file-io error-handling compiler-directives