如何“禁用”文件输出流

时间:2011-06-29 12:56:11

标签: delphi delphi-2009

我正在研究一些遗留代码,其中有很多很多的WriteLn(F,'...')命令几乎遍布整个地方。这些命令中有一些有用的信息(信息变量包含哪些等),所以我不想删除它或将其注释掉,但我想阻止程序写入文件。

有没有办法可以分配F变量,以便忽略写入它的任何内容?我们使用控制台输出,因此这不是一个选项。

2 个答案:

答案 0 :(得分:4)

长时间回到DOS的美好时光 - 如果你将'f'分配给设备'nul',那么应该没有输出。

assign (f, 'nul')

我不知道这是否仍适用于Windows。

编辑: 您也可以将'f'分配给文件 - assignfile(f,'c:\ 1.txt') - 例如。

答案 1 :(得分:0)

打开空设备并让输出去那里可能会有效。在DOS下,NUL设备的性能是非常糟糕的IIRC(根据我的理解,它没有缓冲,因此系统在处理每个字节时必须在设备表中查找NUL)但我不会感到惊讶如果它在新系统下得到改善。无论如何,除非你真的需要最大限度地提高性能,否则这可能是你最容易做到的事情。如果性能至关重要,理论上可能会覆盖WriteLn函数,因此它对某些文件没有任何作用,但遗憾的是我认为它允许任何用户定义函数不允许的语法形式。

否则,我建议使用正则表达式查找/替换来以可机械方式恢复的方式注释掉WriteLn语句。