2010-12-30 3 views
8

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

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

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

Нет себе encuentra-эль-Пунто де Энтрада дель procedimiento @ Idhttp @ TIdCustomHTTP @ GetRequestHeaders $ qqrv en la biblioteca de vínculos dinámicos IndyProtocols150.bpl.

Мой вольный перевод на английский язык:

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

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

  • GetResponseHeaders к GetResponse
  • GetRequestHeaders в GetRequest
  • SetRequestHeaders to SetRequest

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

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

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

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

Рассматриваются вопросы

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

ответ

4

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

Это не представляется возможным установить Инди 10.5.8.0, не нарушая DataSnap в Delphi XE Update 1.

+3

Возможно, просто сохраните копию исходных пакетов, поставляемых с IDE, или установите отдельную копию обновленного Indy. Затем настройте параметры проекта, чтобы использовать исходные пакеты в проектах DataSnap, и использовать обновленные пакеты в других проектах. –

+0

@Remy: То, что вы сказали, точно, мне кажется, что 99% моих соответствующих проектов используют DataSnap, поэтому приятно иметь обновленную INDY для игрушек, но было бы лучше иметь ее для чего-то важного. – jachguate

+1

Я был проинформирован Embarcadero о том, что они будут изучать возможность в будущем сделать DataSnap доступным для Indy без перерыва. –

2

Хотя я не использую Delphi XE сам, но версия 2010 года. Мне удалось обновить компоненты Indy до самой последней версии, с помощью этого сообщения Stack Overflow: Step by step upgrade of Indy 10 in Delphi 2009

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

+0

Спасибо, я не знал, что вопрос, но после моя собственная процедура (и попытка написать статью для моего блога об обновлении). Как сказано, проблема не в компиляции/установке, а в том, что интерфейсы изменены, а другие пакеты имеют зависимости от старых. Спасибо за ваш ответ, жестко. – jachguate

+0

Когда я обновил Indy, мне пришлось вручную редактировать файлы проекта, чтобы использовать новую версию Indy. Это может быть немного хлопот и привести к ошибкам, если забыли. –

7

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

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

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

+0

Ошибка, которую вы видели, потому что другие пакеты (например, Datasnap) зависят от пакета indy, поставляемого вместе с продуктом. Если вы хотите изменить версию Indy, вам необходимо удалить некоторые из других пакетов, которые зависят от них. Удалите старый файл IndyProtocols150.bpl из папки BPL и посмотрите, что еще не удается загрузить, и удалите все затронутые пакеты, прежде чем повторять попытку. –

+2

Пакеты, зависящие от установки, такие как dclDataSnapServer, выглядят плохо для меня, главным образом потому, что я использую DataSnap для своих текущих проектов. Лучшим решением было бы иметь новую совместимую версию для каждого релиза Indy, или иметь вспомогательные версии, совместимые с Indy. Из проклятия ничто из этого не в наших руках ... Возможно, я поеду за поддержкой Эмбаркадеро. – jachguate

+4

Настоящая проблема заключается в том, что Indy не должна вносить изменения в данную версию. IMHO Indy действительно не имеет надлежащего управления выпуском, и Embarcadero должен взять под свой контроль его из-за зависимостей в своем собственном коде. Могут произойти изменения в основных выпусках, но незначительные должны только добавлять исправления или функции, которые не требуют изменений в реальных интерфейсах. В противном случае они сводят с ума любого разработчика, пытающегося построить библиотеки с помощью Indy (т. Е. EldoS SecureBlackBox имеет ту же проблему с Indy). Вероятно, Эмбаркадеро должен раскошелиться на Инди и что-то сделать. –

12

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

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

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

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

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

ii. Закрыть Delphi.

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

iv. Удалите все файлы, соответствующие «Indy * .dcu» и «Id * .dcu» ^^^ в подпапках Lib Delphi.
(C: \ Program Files \ Embarcadero \ RAD Studio \ 8.0 \ Lib \ win32 \ отлаживать)
(C: \ Program Files \ Embarcadero \ RAD Studio \ 8.0 \ Lib \ win32 \ выпуск)
^^^ Предупреждение : следить за не-Инди DCUs, которые случаются начать с буквы «ид» как «idispids.dcu» и «idoc.dcu»

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

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

C.) Извлеките только папки System, Core и Protocols в свою собственную папку библиотеки Indy. ех.
(с: \ MyDelphiComponents \ Indy \ Ядра)
(с: \ MyDelphiComponents \ Indy \ System)
(с: \ MyDelphiComponents \ Indy \ Протоколы)

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

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

F.) Перейти к параметры -> параметры окружения -> Delphi Options -> Library Path - Добавить новую систему, ядро, и папки протоколов с шага C на путь библиотеки Delphi.

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


Важно:.

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

Project -> Параметры -> Описание -> Build Control

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

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


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

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

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

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

+0

Спасибо за ваш ответ. Мой вопрос касается вашей последней части, а не процесса установки самого нового indy, но, как я уже сказал в своем вопросе, обязательно иметь dclDataSnapServer150, потому что мои проекты полагаются на DataSnap, так что вы написали в конце концов, тот же вопрос, а не ответ на мой вопрос. – jachguate

+0

DataSnap использует Indy, но поскольку DataSnap нельзя перекомпилировать, он может использовать только версию Indy, поставляемую с IDE. Для любого проекта, который использует DataSnap, вам придется поддерживать оригинальные пакеты Indy. Поскольку среда IDE позволяет включать/отключать пакеты для каждого проекта, вы можете использовать оригинальные пакеты Indy для своих проектов DataSnap и новые пакеты Indy для других проектов. Просто установите пакеты в разные папки. –

 Смежные вопросы

  • Нет связанных вопросов^_^