Delphi ошибка класс не зарегистрирован

0 / 0 / 0

Регистрация: 08.04.2013

Сообщений: 5

1

Ошибка «класс не зарегистрирован»

08.04.2013, 09:15. Показов 12609. Ответов 9


Студворк — интернет-сервис помощи студентам

Всем привет! Подгрузил класс и новый компонент Map для работы с картой.
На моём компьютере всё нормально работает, но если exe файл запускать на другой машине,
то возникает ошибка: «Класс не зарегистрирован». Что можно сделать?



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

08.04.2013, 09:15

Ответы с готовыми решениями:

Создать родительский класс «Прямоугольник» и к нему подключить дочерний класс «Куб»
Передомной была поставлена задача создать родительский клас прямоугольник и к нему подклю4ить…

Ошибка в строке 97: «incompatible types», а в 99 ошибка: «identifier expected but ‘^’ found», как исправить?
var
tmp,tmp1,tmp2:point;
begin
tmp:=head;
while tmp <> nil do
begin
tmp1:=…

В каждом слове текста замените «а» на букву «е», если «а» стоит на четном месте, и заменить букву «б» на сочетание «ак»,
В каждом слове текста замените "а" на букву "е", если "а" стоит на четном месте, и заменить букву…

Из слов «Работа», «крест», «тон» составить фразу «Кто не работает, тот не ест» и определить ее длину
Из слова "Работа","крест","тон" составить фразу:"Кто не работает, тот не ест" и определить ее длину.

9

2664 / 2270 / 279

Регистрация: 24.12.2010

Сообщений: 13,723

08.04.2013, 09:23

2

Цитата
Сообщение от qweVasya
Посмотреть сообщение

Что можно сделать?

Зарегистрировать класс.



0



0 / 0 / 0

Регистрация: 08.04.2013

Сообщений: 5

08.04.2013, 09:28

 [ТС]

3

а как это сделать?



0



2664 / 2270 / 279

Регистрация: 24.12.2010

Сообщений: 13,723

08.04.2013, 09:40

4

А что значит

Цитата
Сообщение от qweVasya
Посмотреть сообщение

Подгрузил класс и новый компонент Map

?



0



0 / 0 / 0

Регистрация: 08.04.2013

Сообщений: 5

08.04.2013, 09:46

 [ТС]

5

Цитата
Сообщение от mss
Посмотреть сообщение

А что значит … ?

В делфи по умолчанию нет компонента, при помощи которого можно работать с картой. Его пришлось скачивать. Поскольку компонент скачали, то нужно подгрузить класс и компонент через меню Component — Import ActivX Control. Вроде так.



0



2664 / 2270 / 279

Регистрация: 24.12.2010

Сообщений: 13,723

08.04.2013, 09:50

6

ActivX-объекты должны быть зарегистрированы в реестре.
При регистрации как раз и происходит регистрация класса объекта.
regsvr32 MyActiveXObject.ocx (или dll — тебе виднее что у тебя там за файл AX-объекта)



1



0 / 0 / 0

Регистрация: 08.04.2013

Сообщений: 5

08.04.2013, 09:53

 [ТС]

7

Цитата
Сообщение от mss
Посмотреть сообщение

ActivX-объекты должны быть зарегистрированы в реестре.
При регистрации как раз и происходит регистрация класса объекта.
regsvr32 MyActiveXObject.ocx (или dll — тебе виднее что у тебя там за файл AX-объекта)

А что нужно с regsvr32 делать? Это прямо в модуле писать или в командной строке?



0



2664 / 2270 / 279

Регистрация: 24.12.2010

Сообщений: 13,723

08.04.2013, 10:01

8

В ком.строке, разумеется ..

Модуль-то твой причем ?
AX-объекты существуют сами по себе, вне зависимости от того существует ли на свете какая-то там Делфи со своими «модулями»



1



qweVasya

0 / 0 / 0

Регистрация: 08.04.2013

Сообщений: 5

08.04.2013, 10:13

 [ТС]

9

Спасибо, получилось )) Написал вот так и заработало ))

Pascal
1
WinExec('regsvr32 /s MapWinGIS.ocx', SW_HIDE);



0



2664 / 2270 / 279

Регистрация: 24.12.2010

Сообщений: 13,723

08.04.2013, 10:35

10

Регистрацию объекта должен делать инсталлятор твоего приложения, а не само приложение.



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

08.04.2013, 10:35

Помогаю со студенческими работами здесь

На форме располагаются компоненты: редактор Edit; линейка ScrollBar; радионабор с опциями «Цветы», «Деревья», «Рыбы», «Звери»
Доброго времени суток, 2 курс 2 семестр, пришли, препод раздал задачи, сказал качайте дома и…

Тысячные числа исправлять к примеру с «1200» на «1 200», «12000» на «12 000» и т.д
Собственно числа исправлять к примеру с "1200" на "1 200", "12000" на "12 000", "120000" на…

Ошибка «Undeclared identifier» и «Missing operator or semicolon»
Здравствуйте! У меня возникла проблема. Поместил на DataModule компоненты ADOConnection, ADOQuery,…

Класс: Разработать класс, описывающий объект «Телефонный звонок»
Всем добрый вечер))) Пожалуйста помогите, очень прошу
Разработать класс, описывающий объект…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

10

Running a program on a machine that doesn’t have the IDE I get this error. I understand that the problem is a missing or unregistered DLL or OCX.

Lots of postings on how to fix it, but all the answers assume that you know which DLL/OCX is missing.

Using madExcept I see that there are 76 DLL’s listed as «modules».

I’m using Delphi XE for development.

Is there a way to get a list of DLL dependences for a program with the missing ones highlighted in some way.

asked Oct 2, 2017 at 4:27

Jeff Cook's user avatar

10

My problem was indeed relating to a DLL.

I had thought that the difference between working and non working systems was the presence of the IDE, but instead it was the fact that Skype had been installed on some PC and not others.

The culprit (I think) was the Skype4COM.DLL. At some stage Skype functions had been added to the app. As we had decided to remove those functions from the app for other reasons (mainly wanting to stay independent of Skype), I removed them and the app runs OK.

Just putting that DLL onto the non-working PC did not fix the problem, but that may have been related to the old XP.

Thanks to @David Heffernan, @kobik and @Remy Lebeau for helping out.

answered Oct 9, 2017 at 1:58

Jeff Cook's user avatar

Jeff CookJeff Cook

671 silver badge5 bronze badges

I know it is old. But searching the internet for solution I found this thread. I just ran into the same issue. I deployed a Delphi app on a customer machine and got the same error.

The app was using TMediaPlayer and I found out that the target machine was a Windows 10 N, without Media features.

Running an elevated PowerShell and the command

Get-WindowsCapability -online | Where-Object -Property name -like "*media*" | Add-WindowsCapability -Online

solved the issue after a Windows restart.

answered Apr 27, 2022 at 17:04

Mario Werner's user avatar

Mario WernerMario Werner

1,77114 silver badges24 bronze badges

 
Aldor_
 
(2004-08-06 13:47)
[0]

Программа под WinXP работает нормально, а под Win2K вылетает сабж. Подозрвеваю (нет возможности проверить точнее), что ошибка происходит на строке
CreateComObject(CLASS_EnumInstalledApps) as IEnumInstalledApps (строка из модуля, ковертнутого из IDL-файла)
Хотя в справке сказано, что поддерживаются винды 98-XP. Или тогда о чем сигнализирует сабж?


 
Digitman ©
 
(2004-08-06 13:50)
[1]


> о чем сигнализирует сабж?

о том что фабрика класса CLASS_EnumInstalledApps не зарегистрирована в реестре той ОС, в среде которой предпринимается попытка создать экз-р этого класса


 
Aldor_
 
(2004-08-06 14:17)
[2]

Digitman ©   (06.08.04 13:50) [1]
Значть дело именно в ОС и ничего здесь поделать нельзя


 
Digitman ©
 
(2004-08-06 14:20)
[3]

ерунда полная
убедись что ФК действительно зарегистрирована в реестре


 
Aldor_
 
(2004-08-06 14:44)
[4]

Digitman ©   (06.08.04 14:20) [3]

 Извиняюсь за явно дилетантский вопрос, но как в этом убедиться? И если окажется, что не зарегистрен, то как зарегистрить?


 
Digitman ©
 
(2004-08-06 14:47)
[5]

выполни ком.строку

regsvr32 myfabric.dll


 
Гаврила ©
 
(2004-08-06 15:07)
[6]

Это что за класс то ? В MSDN про него ничего нет.
Свой собственный чтоли ?


 
Erik1
 
(2004-08-06 15:13)
[7]

Возможно чтото самопальное.


 
Aldor_
 
(2004-08-06 15:19)
[8]

> Это что за класс то ? В MSDN про него ничего нет.
 Вообще-то странно, в msdn хорошо описана работа со списком установленных программ, и дается ссылка на idl-файл, где все соответствующие интерфейсы определены.
 Импортнул я этот idl-файл (shappmgrp.idl), а там интерфейсы с другими названиями (вот IEnumInstalledApps, например) и другими методами (хотя все очень похоже), пришлось по названиям методов догадываться, что вызывать.
 Вот такая вот фигня в синагоге творится. Была идея, что я наткнулся на старую информациб в msdn, но о новых интерфейс, как Вы тоже смогли убедиться тоже ничего в msdn неизвестно.

Digitman ©   (06.08.04 14:47) [5]
> выполни ком.строку regsvr32 myfabric.dll

LoadLibrary(«myfabric.dll») failed — The specified module counld not be found


 
Digitman ©
 
(2004-08-06 15:24)
[9]


> Aldor_   (06.08.04 15:19) [8]

)) … да это к примеру я ! … посчитал что библиотека с ФК — твоей разработки ..

ок

открой XXX_TLB.PAS, найди строчку, определяющую зн-е ид-ра CLASS_EnumInstalledApps, скопируй в буфер его значение (т.е. CLSID) и поищи его в реестре


 
Aldor_
 
(2004-08-06 15:34)
[10]


> )) … да это к примеру я ! … посчитал что библиотека
> с ФК — твоей разработки ..

:))))))) а я еще удивлялся, какое название библиотеки странное :)


> открой XXX_TLB.PAS, найди строчку, определяющую зн-е ид-ра
> CLASS_EnumInstalledApps, скопируй в буфер его значение (т.е.
> CLSID) и поищи его в реестре

 На машине с WinXP, естественно, нашел, а вот на той, где Win2K — нет. Хотя, еще раз повторяю, в msdn написано, что поддержка этих интерфейсов начинается еще с Win98


 
Digitman ©
 
(2004-08-06 15:38)
[11]

вот теперь открывай этот ключ в ХР и смотри, куда смотрит параметр InProcServer


 
VMcL ©
 
(2004-08-06 15:42)
[12]

>>

Digitman ©  (06.08.04 15:38) [11]

<offtopic>
 Пошаговый саппорт :))
</offtopic>


 
Aldor_
 
(2004-08-06 15:45)
[13]


> вот теперь открывай этот ключ в ХР и смотри, куда смотрит
> параметр InProcServer

В {<CLSID>}\InProcServer32 параметр (Default) имеет значение System32\appwiz.cpl


 
Digitman ©
 
(2004-08-06 15:54)
[14]


> Aldor_   (06.08.04 15:45) [13]

а теперь смотри, есть ли файл этого апплета в наличии в W2k — он обязан там быть !

ищи в реестре ссылки на строчку «appwiz.cpl»

у меня — Винтукей, и этот апплет присутствует и зарегистрирован в реестре так :

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{0B124F8C-91F0-11D1-B8B5-006008059382}\InProcServer32


 
Digitman ©
 
(2004-08-06 15:56)
[15]


> VMcL ©   (06.08.04 15:42) [12]

ввязался же … куда теперь деваться … доведем уж слепого до цели !


 
Aldor_
 
(2004-08-06 16:02)
[16]

Хм…


0B124F8F-91F0-11D1-B8B5-006008059382 - WinXP
0B124F8C-91F0-11D1-B8B5-006008059382 - Win2K

 и… эээ… что теперь, проверять в ран-тайм версию системы? А может CLSID еще и от сервис пака к сервис паку меняется?


 
Aldor_
 
(2004-08-06 16:03)
[17]

>  доведем уж слепого до цели !

  :) Ну почему же слепого? Просто начинающего :)


 
Digitman ©
 
(2004-08-06 16:08)
[18]


> Aldor_   (06.08.04 16:02) [16]

эээ… я никогда не вдавался в эти подробности, это уж ты сам выясняй

в дан. же случае попробуй поменять CLSID в XXX_TLB.PAS на реально зарегистрированный и попробуй создать объект и поработать с ним — вероятность совместимости интерфейсов должна быть явно не нулевая)


 
Aldor_
 
(2004-08-06 16:32)
[19]

Подставил 2К-шное значение CLSID, запустил (под Win2K), ответила опять эксепшеном: «Class factory cannot suply requeated class». Так верить msdn или нет? (я об информации о поддержке разных ОС)


 
Digitman ©
 
(2004-08-06 16:51)
[20]

значится, так …

выкинь нафих то что ты получл с пом. импорта IDL

1. открой любой Делфи-проект
2. выполни меню Projects -> Import Type Library..
3. по кнопке Add выбери файл appwiz.cpl в сист.каталоге ОС
4. нажми кн. Create Unit

в рез-те у тебя будет создан файл SHAPPMGRLib_TLB.pas

повтори это для другой ОС, получи такой же файл для нее, сравни эти файлы

если они совпадают в части CLSID и декларируемых в них интерфейсов, то лажа, наверно — в использованном тобой IDL


 
Aldor_
 
(2004-08-06 16:58)
[21]

Спасибо большое за консультацию, попробую, о результатах в этой ветке сообщу.


 
Бином Ньютоныч
 
(2004-08-06 17:04)
[22]

Так и есть: в appwiz.cpl в TLB стоит
0B124F8F-91F0-11D1-B8B5-006008059382
а в реестре
0B124F8C-91F0-11D1-B8B5-006008059382

>Aldor_

Явно ошибка регистрации, исправь в реестре. Заодно и остальные GUID из этой библии проверь. И нам расскажи:)


 
Aldor_
 
(2004-08-07 06:54)
[23]

Вот резулты импорта appwiz.cpl:

WinXP:

IID_IEnumInstalledApps: TGUID = "{1BC752E1-9046-11D1-B8B3-006008059382}";
CLASS_EnumInstalledApps: TGUID = "{0B124F8F-91F0-11D1-B8B5-006008059382}";
IID_IEnumPublishedApps: TGUID = "{0B124F8C-91F0-11D1-B8B5-006008059382}";

Win2K:

IID_IEnumInstalledApps: TGUID = "{1BC752E1-9046-11D1-B8B3-006008059382}";
CLASS_EnumInstalledApps: TGUID = "{0B124F8F-91F0-11D1-B8B5-006008059382}";
IID_IEnumPublishedApps: TGUID = "{0B124F8C-91F0-11D1-B8B5-006008059382}";

 (совпадают!)

 В реестре в WinXP appwiz.cpl находится в ключе 0B124F8F
 В Win2K - в ключе 0B124F8C

   Я правильно понимаю, что в реестре хранится CLASS GUID?

 Значит в Win2K запись в реестре на самом деле указывает на IID_IEnumPublishedApps, а причем здесь PublishedApps?

 Если честно, не понимаю, как мне поступать?


 
Бином Ньютоныч
 
(2004-08-07 10:36)
[24]

В разделе CLSID хранятся Class ID, а вразделе Interface — Interface ID. Говорю же, ошибка регистрации. Просто сделай RegSvr32 AppWiz.cpl. И еще. Поищи в ХР в реестре интерфейсы. Если обнаружатся, то надо и W2k из зарегистрировать.


 
Daniel.
 
(2004-08-07 13:42)
[25]

Не поверите, в Win2K переименовал ключ в реестре 0B124F8C -> 0B124F8F и все заработало!
Причем как с …TBL.pas от appwiz.cpl Win2K, так и от appwiz.cpl WinXP.

 Что это? Баг винды?

> RegSvr32 AppWiz.cpl

 Нет у меня приложения RegSrv32. Что оно делает?


 
Aldor_
 
(2004-08-07 13:45)
[26]

Daniel.   (07.08.04 13:42) [25]

Извиняюсь, это я. Опять конфликт пользователей ена одном компе.


 
Бином Ньютоныч
 
(2004-08-07 16:08)
[27]

>Не поверите, в Win2K переименовал ключ в реестре 0B124F8C -> 0B124F8F и все заработало!

Ух ты! Да ты что! А про что тебе в [22] было сказано?

> Нет у меня приложения RegSrv32.

И слава Богу. Спокойней как-то.


 
VMcL ©
 
(2004-08-08 11:48)
[28]

RegSvr32


 
Aldor.
 
(2004-08-08 14:48)
[29]

VMcL ©   (08.08.04 11:48) [28]
RegSvr32

Упс, выпрямилку срочно.

RegSvr32 AppWiz.cpl — НЕ вносит измения, описанные в [25]. Как так?


 
Бином Ньютоныч
 
(2004-08-08 14:55)
[30]

>Aldor.   (08.08.04 14:48) [29]
Это странно. У меня внесло. В таком случае можно вручную, всего 2 места. Но, возможно, лучше просто учитывать эту ситуацию в коде.


 
Aldor.
 
(2004-08-08 15:14)
[31]

> всего 2 места

 Какое второе?? (первое описано в [25])


 
Бином Ньютоныч
 
(2004-08-08 15:40)
[32]

>Aldor.   (08.08.04 15:14) [31]

Поиском по реестру найди. Я не запомнил, а опять запускать лень:)


 
Бином Ньютоныч
 
(2004-08-08 15:49)
[33]

Ищи имя ключа, а не раздела. Там отображаемое опиание класса.


При запуске Delphi-приложения может возникнуть ошибка «класс не зарегистрирован», которая указывает на отсутствие какого-то компонента необходимого для работы приложения. Это может произойти в случае если компонент был удален, переименован или перемещен в другую директорию. Чтобы решить эту проблему, необходимо проверить наличие всех файлов компонента, их версии и пути к ним. Также стоит проверить наличие ключей реестра, связанных с этим компонентом.Пример кода на Delphi:procedure LoadMyComponent;var MyComponent: TMyComponent; begin try MyComponent := TMyComponent.Create(nil); MyComponent.DoSomething; except on E: Exception do ShowMessage('Ошибка: ' + E.Message); end;end;Если в процессе выполнения кода появится ошибка «класс не зарегистрирован», это может означать, что компонент не найден в системе. В этом случае стоит проверить версию компонента и его местонахождение. Также стоит проверить, не был ли компонент удален из системы или перемещен в другое место. Если все файлы компонента на месте, можно попробовать зарегистрировать его через командную строку с помощью утилиты Regsvr32.

Не удаётся найти explorer, не загружается рабочий стол, восстанавливаем explorer

Не грузится рабочий стол в Windows 10, 8 1, 8, 7. Ошибки Explorer.ехе. Лечение.

DELPHI Исправляем ошибки прошлого урока под номером 7 =)

Бесплатная лицензионная Delphi Community Edition. Где скачать, как зарегистрировать. Установка

Aula 081 Delphi I — corrigido problema erro

Embarcadero Delphi Обзор преимуществ / Установка / Удаление / Community Edition IDE / 2022 Бесплатно

Delphi мертв?

delphi-hlp.ru — Восстанавливаем проводник в Windows

    msm.ru

    Нравится ресурс?

    Помоги проекту!

    Пожалуйста, выделяйте текст программы тегом [сode=pas] … [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.


    Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
    1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
    2. Как «свернуть» программу в трей.
    3. Как «скрыться» от Ctrl + Alt + Del (заблокировать их и т.п.)
    4. Как прочитать список файлов, поддиректорий в директории?
    5. Как запустить программу/файл?
    … (продолжение следует) …


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


    Внимание
    Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
    Повторная попытка — 60 дней. Последующие попытки бан.
    Мат в разделе — бан на три месяца…

    >
    eolesyserror класс не зарегистрирован.
    , используется компонента TWMP (медиа плеер). Win 2008. Delphi7

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #1

    ,

      Full Member

      ***

      Рейтинг (т): 11

      Привет всем!
      Есть программа, собранная на Delphi7, в ней на форме размещена компонента медиа плеера из вкладки ActiveX. На всех ОС кроме win 2008 это работает успешно. На 2008 же сразу при запуске выдает ошибку «eolesyserror класс не зарегистрирован». Встречался ли кто с подобным? Какого из классов может не хватать на 2008?

      Добавлено
      Недостающая компонента нашлась в библиотеке msdxm.ocx Если ее при помощи regsvr32 зарегистрировать то сообщения про недостающий класс уже не будет, но появляется следующая ошибка — %1 не является приложением Win32

      Добавлено
      Путь по которому регистрировал ocx пробелов не содержит. Приложение тоже скопировал в каталог без пробелов, ситуацию это не меняет

      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

      0 пользователей:

      • Предыдущая тема
      • Delphi: Общие вопросы
      • Следующая тема

      Рейтинг@Mail.ru

      [ Script execution time: 0,0378 ]   [ 16 queries used ]   [ Generated: 21.09.23, 09:55 GMT ]  

      Понравилась статья? Поделить с друзьями:

      Интересное по теме:

    • Delphi ошибка доступа
    • Delphi ошибка unsatisfied forward or external declaration
    • Delphi ошибка invalid variant operation
    • Delphi ошибка floating point overflow
    • Delphi ошибка at beginning of table

    • 0 0 голоса
      Рейтинг статьи
      Подписаться
      Уведомить о
      guest

      0 комментариев
      Старые
      Новые Популярные
      Межтекстовые Отзывы
      Посмотреть все комментарии