OTL在D2007下无法编译

OTL can't be compiled under D2007

我下载了 OTL http://www.omnithreadlibrary.com/

编译D2007 grouproj,安装包,没有问题。

然后我创建一个使用 OtlParallel 单元的简单控制台应用程序,当然,我将 OtlParallel 和一些其他 pas 文件添加到项目中。

但它抱怨找不到 Generics.Collections。

documentation 说:

High-level abstractions are implemented in the OtlParallel unit. They are all created through the factory class Parallel. High-level code intensively uses anonymous methods and generics which makes Delphi 2009 the minimum supported version.

泛型和匿名方法的使用使得这个单元与 Delphi 2007 完全不兼容。

如果您希望在 Delphi 2007 和 OTL 中使用像 Parallel.For 这样的结构,那么您必须自己向后移植 OtlParallel。如果没有匿名方法,这是很难做到的,也很难实现同样流畅的代码风格。您将不得不使用过程类型而不是匿名方法。而且您将不得不手动实施闭包。

所以不用

TProc = reference to procedure;

你会用

TMethod = procedure of object;

然后为了实现它,您创建一个 class 或使用无参数方法记录。您需要添加任何需要的状态作为该类型的成员,并填充这些成员。这本质上是手动实现带有变量捕获的闭包。你需要处理一生。确保实例的寿命超过并行循环。

祝你好运!