Можно ли использовать Indy 10.5.8.0 в Delphi XE и DataSnap? - PullRequest
8 голосов
/ 31 декабря 2010

Корпус

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

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

Нет специальных правил для входа в систему @ Idhttp @ TIdCustomHTTP @ GetRequestHeaders $ qqrv en la biblioteca de vínculos dinámicos IndyProtocols150.bpl.

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

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

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

  • GetResponseHeaders to GetResponse
  • GetRequestHeaders to 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?

Ответы [ 4 ]

12 голосов
/ 14 января 2011

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

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

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

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

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

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

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

iv.Удалите все файлы, которые соответствуют «Indy * .dcu» и «Id * .dcu» ^^^ в подпапках Delphi's Lib.
(C: \ Program Files \ Embarcadero \ RAD Studio \ 8.0 \ lib \ win32 \ debug)
(C: \ Program Files \ Embarcadero \ RAD Studio \ 8.0 \ lib \ win32 \ release)
^^^ Предупреждение: обратите внимание на не-Indy DCU, которые начинаются с букв "id" like "idispids.dcu "и" idoc.dcu "

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

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

C.) Извлечение только папок System, Core и Protocols вВаша собственная папка библиотеки Indy.пример.
(c: \ MyDelphiComponents \ Indy \ Core)
(c: \ MyDelphiComponents \ Indy \ System)
(c: \ MyDelphiComponents \ Indy \ Protocols)

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

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

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

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


Важно:

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

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

Установите переключатель в значение «Явное перестроение».

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


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

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

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

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

7 голосов
/ 31 декабря 2010

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

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

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

4 голосов
/ 31 января 2011

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

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

2 голосов
/ 31 декабря 2010

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

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

...