Вопрос

Этот случай

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

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

No se encuentra el punto de entrada del procedimiento @Idhttp@TIdCustomHTTP@GetRequestHeaders$qqrv en la biblioteca de vínculos dinámicos IndyProtocols150.bpl.

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

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

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

  • GetResponseHeaders для получения ответа
  • GetRequestHeaders для получения запроса
  • Установите requestHeaders в значение SetRequest

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

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

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

Поддержка DataSnap и DevExpress в IDE является обязательной для моей повседневной работы, поэтому

Вопросы

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

Решение 3

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

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

Другие советы

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

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

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

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

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

ii.Закройте Delphi.

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

iv.Удалите все файлы, которые соответствуют "Indy*.dcu" и "Id *.dcu"^^^ во вложенных папках библиотеки Delphi.
(C:\Program Файлы\Embarcadero AD Studio\8.0\lib\win32\debug)
(C:\Program Файлы\Embarcadero AD Studio\8.0\lib\win32 elease)
^^^ Предупреждение:следите за неиндийскими DCU, которые начинаются с букв "id" например, "idispids.dcu" и "idoc.dcu".

v.Удалите всю исходную папку Indy10 целиком:
(C:\Program Файлы\Embarcadero AD Studio\8.0\исходный код\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)

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

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

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

Г.) Выполните следующие 5 действий по порядку:(Просто скажите "ОК" в любых диалоговых окнах об обновлении проекта.)


Важный:

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

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

Установите переключатель в положение "Явная перестройка".

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


  1. Сборка - System\IndySystem150.dpk
  2. Сборка - Core\indycore 150.dpk
  3. Сначала создайте, затем установите - Core \dclindycore 150.dpk
  4. Сборка - Протоколы\IndyProtocols150.dpk
  5. Сначала создайте, затем установите - Protocols\dclIndyProtocols150.dpk

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

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

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

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

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

Imho Embarcadero должен найти решение о своем собственном коде в зависимости от «нестабильной» библиотеки, такой как Indy. Это неприемлемо в профессиональной среде, тем более что они не могут выпустить официальные обновления, включая исправления ошибок из Indy за несколько месяцев после выпуска. Например, в последнее время я обнаружил, что Indy 10.5.5 почтовые сообщения обрезает адреса почты, которые не случаются в 10.5.8. Конечно, поведение 10.5.5 неприемлемо, я вынужден обновить ...

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top