Невозможно привести COM-объект (несовместимость Delphi XE7 — Delphi Berlin)

#delphi #delphi-xe7 #delphi-10.1-berlin

#delphi #delphi-xe7 #delphi-10.1-berlin

Вопрос:

Недавно я установил Delphi Berlin. Не сработало, поэтому я удалил его в тот же день. Теперь мой Delphi XE7 перестал работать. Я получаю эту ошибку, когда пытаюсь что-либо скомпилировать, и я не знаю, как это исправить.

Невозможно привести COM-объект типа ‘System.__ComObject’ к типу интерфейса ‘Borland.Студия.Взаимодействие.IInteropMessageService’. Эта операция завершилась неудачно, поскольку вызов QueryInterface для COM-компонента для интерфейса с IID ‘{FF877130-F96F-3885-9A3E-3093A3C1D831}’ завершился неудачно из-за следующей ошибки: Ошибка загрузки библиотеки типов / DLL. (Исключение из HRESULT: 0x80029C4A (TYPE_E_CANTLOADLIBRARY))

Ошибка такая же, как показано выше. Исходный файл не указан.


Я уже пытался использовать «исправление», предоставленное Embarcadero, но их инструмент не будет работать:

 C:DelphiDelphi XE7bin>tregsvr -t Borland.Studio.Interop.tlb
Embarcadero Turbo Register Server(32) -- COM Server Registration utility.
Version 1.3  Copyright (c) 1997-2010 Embarcadero Technologies, Inc.

Type library name: C:DelphiDelphi XE7binBorland.Studio.Interop.tlb
Type library GUID: {F939BACD-3FD5-437A-833F-BA3535A45966}

Error: Error accessing the OLE registry
  

ИСПРАВЛЕНИЕ (предложено @rruz): вышеуказанная утилита должна запускаться с правами администратора (повышенными). Спасибо @RRuz.

Комментарии:

1. Обратитесь к поставщику за поддержкой. Или попробуйте поиск в Интернете.

2. Мы все знаем, как быстро Embarcadero отвечает на вопросы службы поддержки. Обычно кто-нибудь указывает на причину ошибки в течение нескольких часов при StackOverflow. Это может занять более одной-двух недель, чтобы исправить это с помощью embarcadero.

3. Удивительно, что вы спросили перед поиском.

4. @david — ты имеешь в виду Борланд tregsvr -t. Студия. Хитрость Interop.tlb? Не будет работать. Это выдает мне «Ошибка: ошибка доступа к реестру OLE»

5. Вы запускаете команду tregsvr -t Borland.Studio.Interop.tlb с повышенного cmd.exe ?

Ответ №1:

У меня была такая же проблема, но она была немного хуже.

Мне также пришлось зарегистрировать эту библиотеку типов, используя следующую команду. Запустите это с повышенными правами:

 tregsvr -t Borland.Studio.ToolsAPI.tlb
  

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

Машина немного вялая, вероятно, вызвана тем, что process monitor все еще работает, к счастью, в новой версии этот инструмент работал, что позволило мне найти эту проблему.

Этот инструмент показывает все запрошенные разделы реестра … и этот конкретный инструмент выскочил как «имя не найдено».

Я сделал это следующим образом:

  1. Включить события захвата
  2. Очистить экран.
  3. Очень быстро перейдите к рефакторингу-переименовать

Немедленно прекратите захват событий.

Затем проанализируйте журнал 😉

Комментарии:

1. Попробовал это, но в этом ответе упоминается неправильный TLB (для этой ситуации). Так и должно быть tregsvr -t Borland.Studio.Interop.tlb . Однако я могу представить, что другой tlb нуждается в (повторной) регистрации в других ситуациях.

Ответ №2:

  1. Откройте командную строку от имени администратора.
  2. Перейдите в папку, в которой установлена ваша текущая версия Delphi (пример «c:DelphiSydneybin «)
  3. Запустите «tregsvr -t Borland.Студия.Interop.tlb»