Добро пожаловать в проблемы с использованием загруженного кода Generics. DeHL и дженерики работают в Delphi XE намного лучше, чем в любой предыдущей версии Delphi, но это не то же самое, что «без проблем». Проблемы, с которыми я сталкиваюсь, точно такие же, как ваша
Мое мнение таково, что DeHL демонстрирует все признаки того, что он написан мастером-программистом Delphi, и что это в некотором смысле прекрасно. Это также источник сильной боли, не по своей вине.
Delphi содержит не один или два, а как минимум три (может быть, четыре?) Отдельных синтаксических анализатора, включая полный анализатор компилятора, и несколько IDE-анализаторов, используемых для таких вещей, как Error Insight (ошибки, которые вы видите даже перед сборкой) и анализатор данных завершения кода. У каждого есть свои ограничения языковой поддержки в отношении дженериков. Возможно, что DeHL мог быть написан, чтобы избежать проблем с парсером со всеми различными парсерами Delphi. Я не видел ни одного написанного руководства, которое бы показывало ограничения, но я не удивлюсь, если объявления сложных типов в форме TSomething<TSomething<ISomethingElse>,TBar<IFoo>>
сломают больше, чем некоторые из этих синтаксических анализаторов.
Если вы намереваетесь использовать Generics очень интенсивно, вы также можете отключить Completion Code and Error Insight. Возможно, вам также захочется часто сохранять данные и быть готовым испытать множество проблем с компилятором. И не пытайтесь скомпилировать универсальный код и помещать его в пакеты. Я испытал много URW и AV (внутренние ошибки компилятора), когда я писал обобщенный код. Я обнаружил, что команда компиляторов Delphi великолепно исправляет все, о чем сообщают, но что Generics действительно наиболее стабильны для меня, когда я ограничиваю себя использованием Generics.Collections, поставляемым с Delphi, и не использую другой код, основанный на обобщениях. Кажется, что можно написать материал, используя общие функции, которые IDE и двусторонние инструменты, и завершение кода еще не полностью готовы для обработки. Это означает, что феноменальные космические универсальные силы обходятся классическими функциями производительности RAD IDE.
Тем не менее, последние исходники DeHL из Subversion прекрасно работают для меня и собираются и работают без ошибок, но у самого последнего ZIP-архива с исходным кодом всей коллекции DeHL были проблемы для меня.
Я ожидаю, что в течение следующих нескольких выпусков Delphi, какие бы проблемы не были обнаружены (и DeHL кажется отличным местом, чтобы раздвинуть границы, и это одна из причин, по которой я его большой поклонник) будет исправлено, и вы не будете удивляться, почему тяжелые генерики нарушают ваши возможности IDE, потому что все они снова будут работать.