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

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

Вылетает окно "Система выполнила недопустимую операцию..." [D2005, XP]


Страницы:   1 2

И. Павел ©   (2010-02-09 09:57:00) 

Здравствуйте.
Написал 2 программки на Delphi 2005: одна содержит только кнопку и обработчик, пишущий в Caption; на форму второй поместил ADOConnection и ADOQuery. На компьютере одного пользователя первая программа запустилась, а вторая привела к ошибке: "Программа выполнила недопустимую операцию и будет закрыта...написать письмо в Майкрософт."

Подскажите, пожалуйста - что это может быть?

ADOConnection никак не настраивал, т.е. там пустая ConnectionString.

PS: пользователь является системным администратором и, видимо, устанавливал кучу всяких примочек, меняющих Windows. Так что может он просто удалил какие-нибудь компоненты системы?


И. Павел   (2010-02-12 13:00:00) [1]


> Одно из моих правил: не спорь с дураком

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


Дмитрий Белькевич   (2010-02-12 12:38:00) [2]

Одно из моих правил: не спорь с дураком. Люди со стороны могут не заметить разницы. От дальнейших комментариев воздержусь. Всё уже сказано.


И. Павел   (2010-02-12 09:27:00) [3]


> Это задача операционки.

Хорошо что сообщение - первое из длинной череды полуночных излияний. Сразу настраиваешься на соответствующее восприятие остальных высказываний.

А вдруг даже расширенных специальных возможностей окажется мало? Как пользователь поймет, что виновата операционка/аппаратура - это тоже нужно обрабатывать в программе. Писать функции:
HaveKroshka()
HaveBigKroshka()
ThereIsntEnter()
StartAfterEatingMode()
Иначе вас могут обвинить в лузерстве :).


> и написать что-то вразумительное.

Зачем нужно не доводить до исключения? Если ошибка связана с комплектацией OC - должно быть выведено системное сообщение с возможностью отправки дампа и прочей информации в Microsoft.

Кроме EOleSysError в vcl много исключений - дерзайте.

PS:Вы вообще имеете какое-то отношение к нашему предприятию? Если нет - откуда уверенность, что ошибка не исчезает после переустановки?


Дмитрий Белькевич   (2010-02-12 02:20:00) [4]

>Даже не знаю, что тут больше виновато - OLE или реализация.

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


Дмитрий Белькевич   (2010-02-12 02:19:00) [5]


>  И приплыли - две софтины вместе не живут.


У нас две версии софта вместе не живут из-за того, что с одной из библиотек работаем через OLE (StarBurn - грубо - бурнер оптических дисков). У библиотек разные лицензионные ключи, но одинаковые GUID'ы интерфейсов. В разные версии нашей программы вшиты разные лицензионные ключи (в зависимости от того, с какой дллкой распространяется версия). Проблема происходит так. В системе регистрируется одна из библиотек (дллка). Другая программа пытается открыть зарегистрированный сервер-библиотеку из каталога программы другой версии и, естественно, ничего хорошего из этого не выходит - лицензия не подходит. Даже не знаю, что тут больше виновато - OLE или реализация.


Германн   (2010-02-12 01:51:00) [6]


> И бывало так, что одной нужно одной версии, а другой хоть
> убейся, но более старой. И приплыли - две софтины вместе
> не живут.

С ADO мало знаком. Но такие случаи встречал в других областях.


KilkennyCat   (2010-02-12 01:31:00) [7]

Насколько я помню из своего маленького и печального опыта работы с олеадо, то там надо очень внимательно относиться к mdac и прочему... Я не писал софт, использующих это, но устанавливал. И бывало так, что одной нужно одной версии, а другой хоть убейся, но более старой. И приплыли - две софтины вместе не живут.


Дмитрий Белькевич   (2010-02-12 01:22:00) [8]

>Почетно встать в один ряд? :)

Дык :)


Германн   (2010-02-12 01:08:00) [9]


> Дмитрий Белькевич   (12.02.10 00:15) [31]

Почетно встать в один ряд? :)


Дмитрий Белькевич   (2010-02-12 00:15:00) [10]

Типичная черта ламера - виноваты все, кроме самого себя - начальство, юзеры, админы, винда, апдейты, Гейтс, Белькевич.


Дмитрий Белькевич   (2010-02-11 23:46:00) [11]


> А заедающие клавиши на клавиатуре мне тоже отслеживать?


Это задача операционки. Могла бы.


> Начальство сказало мне заниматься этой ошибкой недолго,
> в перерыве между задачами.


Отсутствие начальства - определённо большой плюс при разработке.


>  А я провозился целый вчерашний день.


Объективно работы на час. Стёк процедур снимается элементарно. Инструментов знаю, как минимум, три. EOleSysError можно отловить и написать что-то вразумительное. Что бы не доводить до исключения
можно попробовать проверить OLE сервер:


function CheckClass(ClassID: TGUID): Boolean;
var
Res: HResult;
begin
Result := CoCreateInstance(ClassID, nil, CLSCTX_INPROC_SERVER or CLSCTX_LOCAL_SERVER, IUnknown, Res) = S_OK;
end;



> Если лень переустанавливать OC


Откуда юзеру знать, что проблема именно в операциоке, а не в твоём софте?


> Администратор сказал, что установил в Windows все офоциальные
> обновления для всего. Выходит это вредно :)


Выходит ты - ламер :)


И. Павел   (2010-02-11 19:40:00) [12]


> По хорошему, если это даже ошибка установки ADO, то нужно
> её отследить

А заедающие клавиши на клавиатуре мне тоже отслеживать?

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

Сейчас мои программы, использующие ADOConnection, стоят где-то у 100-150 пользователей - эта системная ошибка - единственная.

Начальство сказало мне заниматься этой ошибкой недолго, в перерыве между задачами. А я провозился целый вчерашний день. Утром я уже написал отчет, порекомендовав переустановить Windows (начисто). ИМХО это самый простой и гарантированно решающий проблему путь. Если лень переустанавливать OC - попросите, чтобы начальство выделило мне задачу на поиск того, что вы удалили/заменили в системе. Но я сомневаюсь, что они разрешат мне этим заниматься.


Дмитрий Белькевич   (2010-02-11 17:19:00) [13]

По хорошему, если это даже ошибка установки ADO, то нужно её отследить и показать юзеру вместо 'Система выполнила недопустимую операцию'.


Дмитрий Белькевич   (2010-02-11 17:14:00) [14]


> Извиняюсь, но он уже переустановил Windows и ошибка пропала
> :)


Ошибка не пропала.


И. Павел   (2010-02-11 14:39:00) [15]

Извиняюсь, но он уже переустановил Windows и ошибка пропала :)


Игорь Шевченко   (2010-02-11 14:01:00) [16]


> Написал 2 программки на Delphi 2005: одна содержит только
> кнопку и обработчик, пишущий в Caption; на форму второй
> поместил ADOConnection и ADOQuery. На компьютере одного
> пользователя первая программа запустилась, а вторая привела
> к ошибке: "Программа выполнила недопустимую операцию и будет
> закрыта...написать письмо в Майкрософт."


> У пользователя не установлен Delphi.


Как прикажешь тебя понимать ?


> Написано как всегда: программа выполнила недопустимую операцию
> и будет закрыта. Есть еще дамп. А самого текста ошибки я
> не нашел


В окне с предложением отправки есть ссылка: Просмотр сведений или как-то так. Там есть фактическое описание "недопустимой операции" и где именно она стряслась.


И. Павел   (2010-02-11 13:44:00) [17]


> для тестирования существует такая полезная вещь, как отладчик.

У пользователя не установлен Delphi.


> сообщение об ошибке, которую предлагается отправить в MS
> тоже желательно приводить.

Написано как всегда: программа выполнила недопустимую операцию и будет закрыта. Есть еще дамп. А самого текста ошибки я не нашел.


Игорь Шевченко   (2010-02-11 13:27:00) [18]

ошибка здесь
ADODB.CreateADOObject
для тестирования существует такая полезная вещь, как отладчик.
сообщение об ошибке, которую предлагается отправить в MS тоже желательно приводить.


> Но почему появилась ошибка, связанная с OLE?


потому что ADO


И. Павел   (2010-02-09 16:13:00) [19]


> ну а после CoInit(и так и так), с той же ошибкой вылетат?

Да. После инициализации та же ошибка.


12   (2010-02-09 16:10:00) [20]

ну а после CoInit(и так и так), с той же ошибкой вылетат?

чего делает? инициализирует :)
Может как не так как инициализировалось
Если, например, в рантайме создавать ado в консольных - надо вручную вызывать


Страницы:   1 2

Наверх

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