Можно ли перекомпилировать пакеты DataSnap в Delphi XE с новой / другой версией Indy? - PullRequest
9 голосов
/ 27 июня 2011

Хорошо - у нас есть интересная проблема.

Немного предыстории:

  1. Наше основное приложение использует Indy 10. Однако мы берем источник Indy 10 и исправляем его.в нем ошибки, перекомпилируйте и установите наш собственный набор компонентов Indy.

  2. Мы мигрируем в Delphi XE и хотим начать использовать DataSnap.

  3. Для DataSnap требуется «официальная, поставляемая» версия Indy, которая несовместима с нашей настроенной версией Indy.

  4. Наши серверы DataSnap будут отдельными приложениями, но поскольку у нас есть собственный Indyустановлен в IDE, мы не можем «пересекать потоки».

Хорошо, поэтому мы не можем использовать DataSnap Delphi XE «из коробки» из-за этой проблемы совместимости.

Итак, мои вопросы таковы:

Возможно ли перекомпилировать пакеты DataSnap в Delphi XE с новой / другой версией Indy?

Ваши мысли с благодарностью приняты.

Ответы [ 2 ]

3 голосов
/ 28 июня 2011

Считается, что нет, это невозможно из-за того, что не все источники предоставляются Embarcadero, а некоторые из этих источников зависят от сборки Indy при поставке. (Что крайне разочаровывает конечных пользователей, поскольку версия Indy, поставляемая с Delphi, относительно быстро устарела, и иногда выбранная в то время версия не обязательно является очень хорошей.)

См. Связанный вопрос SO: Можно ли использовать Indy 10.5.8.0 в Delphi XE и DataSnap?

Также см. Страницу проекта Indy: http://www.indyproject.org/Sockets/Docs/indy10Installation.de.aspx в котором говорится:

Примечание. В D / CB / RAD 2009+ DataSnap использует Инди 10 внутри. Установка нового версия Indy будет рендерить DataSnap непригоден, так как не сможет загрузить пакеты Indy больше. DataSnap скомпилирован против Indy пакеты, которые поставляются с IDE, и DataSnap не может быть перекомпилирован до конца пользователи. Если вам нужно использовать DataSnap, тогда вам нужно будет поддерживать оригинальные пакеты Indy 10 для использования в Проекты DataSnap.

Говорят, что в следующей версии должны быть предусмотрены более простые обновления Indy.

2 голосов
/ 28 июня 2011

Если включен весь источник DataSnap, конечно, возможно использовать какую-то исполняемую программу анализа PE, чтобы определить, какие классы и единицы используются в BPL (поскольку BPL - это просто настраиваемые библиотеки DLL). GExperts очень прост в использовании.

В BPL строки списка экспорта из GExperts \ PE Information имеют формат: @ xp $ @ [nn] [UnitName] @ [TypeName] (для типов) и @ [UnitName ] {@ [Тип>]} @ [Единичный глобальный элемент, такой как процедуры или переменные] (для остальных).

Вы можете сохранить этот список в файл и GREP, чтобы получить список единиц, используемых на BPL.

Реальные примеры (vcl140.bpl):

  • @ $ xp $ 11Forms @ TForm
  • @ Appevnts @ TCustomApplicationEvents @ Активировать
  • @ Clipbrd @ Clipboard
...