0

我有一个旧的 TP5 程序。它使用 TP7 编译并运行正常。我想捕获并记录一些 write / writeln 语句。我可以对 write 和 writeln 进行全局搜索和替换,所以我不介意这样的代码更改。它确实使用了一些格式化的输出: write(r:4:2) 所以我想保留它。

除了写入文件,然后读取每一行并再次写入之外,我不知道任何方法来捕获 write/writeln :~( 但我突然想到,这非常像写入流(在 Tp5.1 中引入)。 5),然后将副本流式传输到多个输出。

有没有人这样做过?可能吗?还有其他方法吗?

4

1 回答 1

0

Afaik 这是可能的,并且通常在 TP 的继任者 FPC 和 Delphi 中完成。唯一的问题是 TEXTREC 不是由 TP 导出的,所以你必须将它从源复制到某个地方。

textrec 有一堆过程变量(如 C 中的函数指针),您可以将其设置为您自己的函数来处理 I/O。设置这些变量是 Assign() 所做的。

问题是找到存储状态的空间(例如指向流的指针)。IIRC TP textrec 比 Delphi 的更严格。

无论如何,请搜索 Peter 下面的单元 StreamIO。这是您必须采用的 FPC/Delphi 单元,但至少它展示了原理。无论如何,最好简单地迁移到更新的东西。也许 SWAG 也有 TP 等价物。

于 2014-06-17T07:25:07.983 回答