Можно ли использовать Indy 10.5.8.0 в Delphi XE и DataSnap?

по делу

Я пытаюсь обновить INDY до последней версии для моего Delphi XE (обновление 1), поэтому я загрузил последний файл INDY10 (Indy_4545.zip) от indy.fulgan.com/ZIP.

пакеты компилируются успешно, и теперь я могу даже увидеть новую версию 10.5.8.0 в диалоговом окне "о программе", но после перезапуска IDE я получил сообщение:

нет SE найти Эль Пунто де энтрада-дель-procedimiento @Idhttp@TIdCustomHTTP@GetRequestHeaders$qqrv в библиотеке де vínculos dinámicos IndyProtocols150.bpl.

мой бесплатный перевод на английский язык:

точка входа не найдена для процедуры @Idhttp@TIdCustomHTTP@GetRequestHeaders$qqrv не найдена в динамической библиотеке ссылок IndyProtocols150.bpl.

после быстрого сравнения старого и нового IdHTTP.pas я нашел много изменений в классе TIdCustomHttp, включая переименование некоторых методы

  • GetResponseHeaders для GetResponse
  • GetRequestHeaders для GetRequest
  • SetRequestHeaders для SetRequest

вместе с измененным общедоступным / опубликованным методом фирмы в этом и других интерфейсах и классах.

после обновления у меня появилось много пакетов, которые не загружаются, включая dclcxPivotGridOLAPD15.bpl, который в свою очередь зависит от dclDataSnapServer150.bpl, который встречает отсутствующий метод на bpl.

AFAIK я не могу перекомпилировать dclDataSnapServer150.bpl (и, возможно, другие неудачные пакеты, я просто остановился здесь).

поддержка DataSnap и DevExpress в IDE является обязательным для моего изо дня в день так

вопросы

  1. есть ли безопасный предварительно установленный путь для обновления до новейшего INDY для Delphi XE?
  2. если нет, я на безопасной стороне, просто выжигая исходный код, создавая старые общедоступные методы и назвать новые по части реализации?
  3. Я пропустил что-то еще или я действительно застрял с INDY 10.5.7 до следующего выпуска Delphi minor/major?

4 ответов


[установка Indy для Delphi XE]

Да, процесс установки утомителен, но это стоит того, чтобы сделать это правильно.

Это для всех компонентов Indy, кроме SSL. (Я еще не пробовал ничего из SSL.)

А.) искать и уничтожать все файлы Indy, которые поставляются с Delphi. Это не хорошо, как проект Indy обновляется один день С новыми исправлениями ошибок. Если Delphi поднимет любой из старых файлы вместо новой свежей библиотеки Indy, вы получите сумасшедшие ошибки из IDE во все разные времена, которые очень трудно след.

i. Перейдите в Component-->Install Packages, затем полностью удалите все пакеты, которые начинаются с "Indy".

ii. Закрыть Дельфи.

iii. Удалите все файлы, соответствующие " dclIndy*".bpl " и " Indy*.bpl " из папки Bin Delphi.
(C:\Program файлы\Embarcadero\RAD Studio\8.0\bin)

iv. Стереть все файлы, которые соответствуют "инди*.dcu " и " Id*.dcu " ^^^ в подпапках Lib Delphi.
(C:\Program файлы\Эмбаркадеро\рад в Studio\8.0\lib в\с Win32\отладка)
(C:\Program файлы\Эмбаркадеро\рад в Studio\8.0\lib в\с Win32\релиза)
^^^ Предупреждение: следите за Неиндийскими DCUs, которые начинаются с букв " id" как " idispids.dcu " и " idoc.dcu"

v. удалите всю исходную папку Indy10:
(C:\Program файлы\Embarcadero\RAD Studio\8.0\source\Indy10)

б) загрузите последнюю версию Indy10_XXXX.zip от http://indy.fulgan.com/ZIP/ (Если вы получаете ошибку компиляции или ошибку времени выполнения, используя этот zip-файл для любого из шагов внизу - не отчаивайтесь! Повторно загрузите zip-файл на следующий день и попробуйте снова. Этот zip-файл обновляется каждый день, и есть вероятность, что некоторые ошибки/ошибки в любой день.)

С.) Извлеките только папки System, Core и Protocols в свою собственную папку Indy library. бывший.
(c:\MyDelphiComponents\Indy\Core)
(c:\MyDelphiComponents\Indy\System)
(c:\MyDelphiComponents\Indy\Protocols)

Д.) Запустить Delphi. Игнорировать все неудачные диалоговые окна пакетов: это пакеты Embarcadero что полагаться на Инди! (Просто нажмите Ok на все ошибки и укажите, что любой сбой пакеты не должны загружаться снова.)

Е.) перейдите в параметры-- > параметры среды-->параметры Delphi-->путь просмотра - Удалить пути, которые начинаются с $(BDS)\Lib\Indy10

Ф.) перейдите в параметры-- > параметры среды-->параметры Delphi-->путь к библиотеке - Добавьте новые папки System, Core и Protocols с шага C в путь к библиотеке Delphi.

г.) выполните следующие 5 действий по порядку: (Просто сказать OK в диалоги о модернизации проект.)


важно:

после загрузки каждого dpk и перед каждой сборкой перейдите к:

Проект-->Параметры-- > Описание-->Управление Сборкой

установите переключатель на "явное перестроение".

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


  1. построить - Система\IndySystem150.dpk
  2. Build-Core\IndyCore150.dpk
  3. построить первый, затем установите-Core\dclIndyCore150.dpk
  4. Build-Protocols\IndyProtocols150.dpk
  5. построить первый, затем установите-протоколы\dclIndyProtocols150.dpk

** дважды проверьте, что вы установили "явное Перестроение" на всех пакетах! **

г.) наконец, перейдите к компоненту-->Install Packages и найдите все пакеты, которые полагаются на Инди, которые были отключены во время шага D. Реактивируйте их и перезапустите Delphi. (Если ваш новый Indy не слишком изменился от того, который выпущен с Delphi, эти пакеты будут использовать новый инди!)

++ Примечание, Вы не можете получить какие-либо ошибки сразу при повторной активации этих Embarcadero пакеты, но они могут появиться в произвольное время позже. Например, я только что установил Indy10_4548.zip и все реактивированные пакеты казались прекрасными. Потом день позже из синий, IDE и кинул мне сообщение, что он не мог найти GetRequestHeaders в TIdCustomHTTP и что dclWindowsAzureManagement150.у bpl возникли проблемы как результат. Поэтому мне пришлось вернуться и отключить этот пакет Windows Azure в IDE.


AFAIK вы потеряете некоторые пакеты, которые сильно зависят от версии Indy, развернутой с Delphi, особенно от новой Datasnap.

вы можете попытаться создать свои пакеты onwn для использования вместо стандартных, которые не могут быть перекомпилированы, пока доступны все необходимые единицы.

IMHO Embarcadero должен найти решение о своем собственном коде в зависимости от" нестабильной " библиотеки, такой как Indy. Это неприемлемо в профессиональной среде, особенно поскольку они не могут выпускать официальные обновления, включая исправления ошибок от Indy за несколько месяцев с момента выпуска. Например, недавно я обнаружил, что Indy 10.5.5 mail message parsing усекает почтовые адреса, что не происходит в 10.5.8. Конечно, поведение 10.5.5 неприемлемо,я вынужден обновить...


из других ответов и в основном комментариев Реми:

невозможно установить Indy 10.5.8.0 без нарушения DataSnap в Delphi XE Update 1.


хотя я не использую Delphi XE самостоятельно, но версию 2010. Я смог обновить компоненты Indy до самой последней версии с помощью этого сообщения переполнения стека: шаг за шагом обновление Indy 10 в Delphi 2009

Я знаю, что вопрос для 2009 (но ответ также охватывает 2010), но он работал для меня в версии 2010, поэтому я предполагаю, что это поможет вам. Я бы рекомендовал вам прочитать комментарии, так как есть некоторые хорошие также подсказки. Надеюсь, это поможет.