Привет хабр! Понадобилось внезапно портировать программу с C# на Delphi. В программе на C# активно использовался [yield][1]. Погуглив просторы интернета в надежде не заниматься изобретением велосипеда, удалось найти реализацию yield для Win32 на базе [фиберов][2] для [Embarcadero Delphi 2009][3] и выше, но вот беда — требовалось сделать порт под CodeGear RAD Studio для версии Delphi 2007, в которой ещё отсутствовали [обобщённые типы][4] и [анонимные методы][5]. Менять версию Delphi на более позднюю было нельзя и поэтому пришлось переписать найденную реализацию yield для более ранней версии. Взяв [исходник юнита][6] с реализаций yield для Delphi 2009 и выше за авторством [Andriy Gerasika][7] я его переделал для Delphi 2007. [Читать дальше →][8]
[1]:
http://msdn.microsoft.com/ru-ru/library/9k7k7cf0.aspx
[2]:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms682661%28v=vs.85%29.aspx
[3]:
http://www.embarcadero.com/products/delphi
[4]:
https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D0%BE%D0%B1%D1%89%D1%91%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5#Object_Pascal
[5]:
https://ru.wikipedia.org/wiki/%D0%90%D0%BD%D0%BE%D0%BD%D0%B8%D0%BC%D0%BD%D0%B0%D1%8F_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F
[6]:
http://cdn.gerixsoft.com/sites/gerixsoft.com/files/DelphiYield.zip
[7]: mailto:andriy.gerasika@gerixsoft.com
[8]:
http://habrahabr.ru/post/242737/#habracut