The documentation говорит:
абстракциями высокого уровня реализованы в блоке OtlParallel. Все они созданы через заводской класс Parallel. Высокоуровневый код интенсивно использует анонимные методы и генерики, что делает Delphi 2009 минимальной поддерживаемой версией.
Это нас обоих дженерики и анонимные методы делает данное устройство полностью несовместима с Delphi 2007.
Если вы хотите использовать конструкцию как Parallel.For
с Delphi 2007 и OTL, то вам придется обратно-порт OtlParallel
сам. Без анонимных методов это очень сложно сделать и достичь того же жидкого стиля кода. Вам придется использовать процедурные типы вместо анонимных методов. И вам придется вручную выполнять закрытие.
Таким образом, вместо того, чтобы использовать
TProc = reference to procedure;
вы бы использовать
TMethod = procedure of object;
А потом реализовать это создать класс или запись с помощью метода без параметров. Вам нужно будет добавить любое состояние в качестве членов этого типа и заполнить эти элементы. Это по существу ручная реализация замыкания с переменным захватом. И вам придется иметь дело со временем. Убедитесь, что экземпляры переживают параллельный цикл.
Удачи вам!
OtlParallel не поддерживается в D2007, поскольку D2007 не имеет общей поддержки. – gabr
Это то, что сказано на домашней странице проекта «В настоящее время поддерживаются версии 2007, 2009, 2010, XE, XE2, XE3, XE4, XE5, XE6, XE7, XE8 и 10 Seattle». –
Из http://otl.17slon.com/book/chap04.html#highlevel: "2.1 Введение Абстракции высокого уровня реализованы в модуле OtlParallel. Все они созданы с использованием фабричного класса Parallel. Высокоуровневый код интенсивно использует анонимные методы и генерические файлы, что делает Delphi 2009 минимальной поддерживаемой версией. Поскольку реализация дженериков в D2009 не очень стабильна, я бы рекомендовал использовать, по крайней мере, Delphi 2010. " – gabr