Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ошибка EOleSysError [D7, WinXP]


Серёга ©   (2005-06-06 22:18:00) 

При запуске своего приложения на другой ОС (ХР) выдаётся сообщение, типа:
"Exception EOleSysError at myprogram.exe at (адрес, типа 120021). Не найден указанный модуль. Причём под 2000 виндой, где я делал, и компилируется и запускается нормально. Этот баг обнаружен уже на 2-ом компе их XP. Может кто поможет? Заранее благодарен.


jack128   (2005-06-07 20:33:00) [1]

Серёга   (07.06.05 17:50) [5]
ShellExecute(GetDesktopWindow,'open','c:\windows\system\regsvr32.exe','c:\windows\system\swflash.ocx',nil,SW_SHOWNORMAL)  ;

Delay(3000); // Wait for registration

Б-р-р.. Никогда не делай так. Для таких вещей есть CreateProcess + WaitForSingleObject


Серёга   (2005-06-07 17:51:00) [2]

Нет, плейер установлен. Это проблема с ActiveX.


Серёга   (2005-06-07 17:50:00) [3]

Сейчас нашёл то, что мне надо, но к сожалению, под делфу 7 не идёт:
-------------------------------------------------------------
Коммерческие ActiveX компоненты обычно без проблем подключаются к Delphi и позволяют использовать их свойства так же, как и VCL-компонентов. Но начинающий программист будет удивлен, если увидит, что перенесенная на другой компьютер программа не будет работать. Обычно возникает ошибка EOleSysError. Естественно, ведь сервера ActiveX и кода в нем, который отвечает за манипуляцию данными, найти невозможно без регистрации сервера в системе.

Для того, чтобы программа знала, где найти этот код и данные, сервер следует зарегистрировать. В RxLib есть соответствующая функция, но у меня она не сработала. Не знаю, почему. Поэтому предлагаю универсальный способ. В каталоге windows\system есть утилита regsvr32.exe, которая одним параметром принимает имя файла, и регистрирует его. Остальные параметры можете узнать у нее сами.

Пример регистрации, если произошла ошибка EOleSysError. Код из файла .dpr одной из моих программ:

begin

Application.Initialize;

try Application.CreateForm(TSWFViewForm, SWFViewForm);

except on EOleSysError do //Если возникло исключение, регистрируем сервер

begin

ShellExecute(GetDesktopWindow,'open','c:\windows\system\regsvr32.exe','c:\windows\system\swflash.ocx',nil,SW_SHOWNORMAL) ;

Delay(3000); // Wait for registration

try Application.CreateForm(TSWFViewForm, SWFViewForm);

except MessageDlg('ActiveX сервер не найден!',mtError,[mbOK],0);

end;

end

end;

Application.Run;

end.

Взято с http://eef.ispu.ru/sitestud/sav/activex.htm
------------------------------------------------------
У меня ругается на: EOleSysError, ShellExecute, SW_SHOWNORMAL, Delay, MessageDlg, mtError - Undeclared identifier.


VMcL   (2005-06-07 17:40:00) [4]

>> Серёга   (07.06.05 17:34) [3]

> У меня - да, но почему то на некоторых других компах - нет...

Вероятно, потому что на этих "других компах" не установлен Flash Player.


Серёга   (2005-06-07 17:34:00) [5]

{Шерсти весь код, который выполняется до Application.Run. те виднее, что ты там с com делаешь}
Тяжело, когда на своём РС всё работает, и постоянно ходить к кому-то и тестить, в чём дело накладно. Благо повезло, долго ходить не пришлось, и я понял, что проблема в компоненте ShockwaveFlashObjects_TLB. Он предназначен для вставки в проект flash-роликов. Как заявляет автор статьи сайта http://delphid.dax.ru(Delphi и Flash. Совмещение несовместимого!), в дэлфе флэш идёт. У меня - да, но почему то на некоторых других компах - нет... может кто скажет, есть ли выход?


jack128   (2005-06-06 22:46:00) [6]

А чего тут скажешь.. Шерсти весь код, который выполняется до Application.Run. те виднее, что ты там с com делаешь..


KilkennyCat   (2005-06-06 22:23:00) [7]

I>
> Может кто поможет?


могу удар милосердия сделать.


Наверх

Титульная страница Поиск, карта сайта Написать письмо