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-09 16:04:00) [21]

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


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


> 12 ©

И у меня и у пользователя выводит '0'


И. Павел   (2010-02-09 15:56:00) [23]


>Ega23 ©

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


> 12 ©

Сейчас попробую, если админ еще не ушел. А что делает CoInitializeEX?


12   (2010-02-09 15:41:00) [24]

так чего то показывает ?

program Project1;

uses
 Dialogs,
 SysUtils,
 Forms,
 Unit1 in 'Unit1.pas' {Form1},
 comobj;

{$R *.res}

begin
 showmessage (inttostr(CoInitializeEX(nil,2) ));
-- showmessage (inttostr(CoInitializeEX(nil,0) ));
 Application.Initialize;
 Application.CreateForm(TForm1, Form1);
 Application.Run;
end.


Ega23   (2010-02-09 15:02:00) [25]

А ADO-то хоть на машине установлено? А версия?


12   (2010-02-09 15:00:00) [26]

ИМХО,

CoInitialize - тут скорее всего что-то
попробуйте тут почитать
http://www.interface.ru/fset.asp?Url=/borland/decom_3.htm


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


> [0046AB0D]{Project1.exe} JclDebug.TJclStackInfoList.Create
> + $9D
> [00457678]{Project1.exe} ComObj.OleError + $14


Получается, что сам JclDebug.TJclStackInfoList.Create  привел к ошибке?


И. Павел   (2010-02-09 14:49:00) [28]


> тут понятнее
> http://rsdn.ru/article/Delphi/DelphiJCL.xml?print

Спасибо.

Я, наконец, то поставил JEDI. Он выдал ошибку в модуле ComObj в функции OleError

{ Raise EOleSysError exception from an error code }

procedure OleError(ErrorCode: HResult);
begin
 raise EOleSysError.Create('', ErrorCode, 0);
end;


Но почему появилась ошибка, связанная с OLE? Ведь провайдер еще неизвестен?

Вот стек вызовов:

[0046AB0D]{Project1.exe} JclDebug.TJclStackInfoList.Create + $9D
[00457678]{Project1.exe} ComObj.OleError + $14
[0046AA1B]{Project1.exe} JclDebug.JclCreateStackList + $17
[00497AF2]{Project1.exe} Project1.LogException (Line 48, "C:\DEBUGGER_JEDI\Project1.dpr" + 21) + $6
[00457678]{Project1.exe} ComObj.OleError + $14
[00403BC4]{Project1.exe} System.@TryFinallyExit + $10
[00402496]{Project1.exe} System.SysFreeMem + $10A
[00404D4A]{Project1.exe} System.@FinalizeArray + $4A
[00404CD4]{Project1.exe} System.@FinalizeRecord + $20
[0046B45F]{Project1.exe} JclDebug.TJclExceptFrame.AnalyseExceptFrame + $1A7
[0040363B]{Project1.exe} System.@AfterConstruction + $7
[0046B29D]{Project1.exe} JclDebug.TJclExceptFrame.Create + $3D
[0042B7E9]{Project1.exe} Contnrs.TObjectList.Notify + $21
[0040346A]{Project1.exe} System.@IsClass + $E
[0041CFC8]{Project1.exe} Classes.TThreadList.UnlockList + $4
[0046A65E]{Project1.exe} JclDebug.TJclGlobalStackList.FindObject + $9A
[00457678]{Project1.exe} ComObj.OleError + $14
[0041C99A]{Project1.exe} Classes.TList.Add + $2A
[0041CFC8]{Project1.exe} Classes.TThreadList.UnlockList + $4
[0046A5B0]{Project1.exe} JclDebug.TJclGlobalStackList.AddObject + $74
[00457678]{Project1.exe} ComObj.OleError + $14
[00465A03]{Project1.exe} JclHookExcept.TNotifierItem.DoNotify + $13
[00465B08]{Project1.exe} JclHookExcept.DoExceptNotify + $CC
[00457678]{Project1.exe} ComObj.OleError + $14
[00465BA3]{Project1.exe} JclHookExcept.HookedRaiseException + $3F
[00457678]{Project1.exe} ComObj.OleError + $14
[00457690]{Project1.exe} ComObj.OleCheck + $10
[0048AB6D]{Project1.exe} ADODB.CreateADOObject + $49
[0048B3F6]{Project1.exe} ADODB.TADOConnection.Create + $3A
[004209CD]{Project1.exe} Classes.CreateComponent + $AD
[00420BFC]{Project1.exe} Classes.TReader.ReadComponent + $88
[00422004]{Project1.exe} Classes.TReader.ReadValue + $8
[00420EA9]{Project1.exe} Classes.TReader.ReadDataInner + $89
[00420DE8]{Project1.exe} Classes.TReader.ReadData + $38
[0042318D]{Project1.exe} Classes.TComponent.ReadState + $1
[0043520D]{Project1.exe} Controls.TControl.ReadState + $2D
[004384DD]{Project1.exe} Controls.TWinControl.ReadState + $25
[0044DF5D]{Project1.exe} Forms.TCustomForm.ReadState + $59
[00421BE9]{Project1.exe} Classes.TReader.ReadRootComponent + $1D5
[0041F38E]{Project1.exe} Classes.TStream.ReadComponent + $32
[0041C6D3]{Project1.exe} Classes.InternalReadComponentRes + $57
[0041C85D]{Project1.exe} Classes.InitComponent + $79
[7C911023]{ntdll.dll   } Unknown function at wcsncpy + $AA4
[7C9101D6]{ntdll.dll   } RtlAllocateHeap + $112
[7E37DEEC]{user32.dll  } SystemParametersInfoA + $3A
[7C9101D6]{ntdll.dll   } RtlAllocateHeap + $112
[7C9114D1]{ntdll.dll   } Unknown function at RtlDeleteCriticalSection + $157
[7C91150F]{ntdll.dll   } Unknown function at RtlDeleteCriticalSection + $195
[7C9114E5]{ntdll.dll   } Unknown function at RtlDeleteCriticalSection + $16B
[7E37DEEC]{user32.dll  } SystemParametersInfoA + $3A
[7E37DF01]{user32.dll  } SystemParametersInfoA + $4F
[00403BC4]{Project1.exe} System.@TryFinallyExit + $10
[00402346]{Project1.exe} System.SysGetMem + $14A
[0040327B]{Project1.exe} System.TObject.NewInstance + $13
[004035E3]{Project1.exe} System.@ClassCreate + $7
[0040363B]{Project1.exe} System.@AfterConstruction + $7
[004032B0]{Project1.exe} System.TObject.Create + $10
[0041C8EE]{Project1.exe} Classes.InitInheritedComponent + $62
[0044D8F5]{Project1.exe} Forms.TCustomForm.Create + $A1
[774EF34E]{ole32.dll   } Unknown function at CoInitializeEx + $3D3
[774EF4CE]{ole32.dll   } Unknown function at CoInitializeEx + $553
[774ED6C6]{ole32.dll   } Unknown function at IsValidInterface + $28D
[774ED7E9]{ole32.dll   } Unknown function at IsValidInterface + $3B0
[774ED220]{ole32.dll   } Unknown function at CoTaskMemAlloc + $1C0
[774ED1E9]{ole32.dll   } Unknown function at CoTaskMemAlloc + $189
[774EF5EC]{ole32.dll   } Unknown function at CoInitializeEx + $671
[77502D78]{ole32.dll   } Unknown function at CoGetTreatAsClass + $1897
[00403BC4]{Project1.exe} System.@TryFinallyExit + $10
[00402346]{Project1.exe} System.SysGetMem + $14A
[0045504D]{Project1.exe} Forms.TApplication.CreateForm + $31
[00498067]{Project1.exe} Project1.Project1 (Line 73, "C:\DEBUGGER_JEDI\Project1.dpr" + 7) + $13
[7C90DCB8]{ntdll.dll   } ZwSetInformationThread + $A
[7C817074]{kernel32.dll} Unknown function at RegisterWaitForInputIdle + $46

Насколько я понимаю, ошибки пошли после Project1.LogException. Но что это значит? Пожалуйста, подскажите.


12   (2010-02-09 11:21:00) [29]

тут понятнее
http://rsdn.ru/article/Delphi/DelphiJCL.xml?print


И. Павел   (2010-02-09 10:49:00) [30]


> 12 ©

Спасибо, сейчас попробую.


12   (2010-02-09 10:47:00) [31]

можно попробовать скачать Jcl и написать что-то вроде

procedure LogException(ExceptObj: TObject;
 ExceptAddr: Pointer; IsOS: Boolean);
var
 mmLog: TStringList;
 TmpS: String;
 ModInfo: TJclLocationInfo;
 I: Integer;
 ExceptionHandled: Boolean;
 HandlerLocation: Pointer;
 ExceptFrame: TJclExceptFrame;
begin
 if ExceptObj.ClassName = 'ELicenceError' then Exit;
 mmLog := TStringList.Create;
 try
   //mmLog.Add('ExceptIntercept exception data: ' + DateTimeToStr(Now));
   TmpS := ' Exception ' + ExceptObj.ClassName;
   if ExceptObj is Exception then
     TmpS := TmpS + ': ' + Exception(ExceptObj).Message;
   if IsOS then
     TmpS := TmpS + ' (OS Exception)';
   mmLog.Add(TmpS);
   ModInfo := GetLocationInfo(ExceptAddr);
   mmLog.Add(Format(
     '  Exception occured at $%p (Module "%s", Procedure "%s", Unit "%s", Line %d)',
     [ModInfo.Address,
      ModInfo.UnitName,
      ModInfo.ProcedureName,
      ModInfo.SourceName,
      ModInfo.LineNumber]));
   MessageBox(0, PChar(mmLog.Text), 'Exception', MB_OK or MB_ICONWARNING);
 finally
   mmLog.Free;
 end;
end;

begin
 JclStackTrackingOptions :=  [stExceptFrame, stStack,  stRawMode, stAllModules, stStaticModuleList];
 JclStartExceptionTracking;
 JclAddExceptNotifier(LogException);
{в настройках надо включить максимум для Linker MapFile}

 Application.Initialize;
 Application.CreateForm(TForm1, Form1);
 Application.Run;

end.


И. Павел   (2010-02-09 10:43:00) [32]


> Я, конечно не спец. Но что делает ТADOConnection, если "там
> пустая ConnectionString"?

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


Германн   (2010-02-09 10:31:00) [33]


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


> И. Павел ©   (09.02.10 10:10) [5]
>
>
> > Германн ©
>
> У пользователя не запускалась программа. Я написал несколько
> - выяснил, что проблема возникает, если добавить ADOConnection.
>  У других пользователей этих проблем нет.
>

Я, конечно не спец. Но что делает ТADOConnection, если "там пустая ConnectionString"?


И. Павел   (2010-02-09 10:24:00) [34]

Настоящая программа использует провайдер: SQLOLEDB.1


И. Павел   (2010-02-09 10:23:00) [35]


> там есть тех.подробности, что там писано?


Вот описание ошибки:

<?xml version="1.0" encoding="UTF-16"?>
<DATABASE>
<EXE NAME="Project1.exe" FILTER="GRABMI_FILTER_PRIVACY">
   <MATCHING_FILE NAME="Project1.exe" SIZE="630272" CHECKSUM="0xBF2CE770" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" LINK_DATE="06/19/1992 22:22:17" UPTO_LINK_DATE="06/19/1992 22:22:17" />
</EXE>
<EXE NAME="kernel32.dll" FILTER="GRABMI_FILTER_THISFILEONLY">
   <MATCHING_FILE NAME="kernel32.dll" SIZE="995840" CHECKSUM="0xC3003E57" BIN_FILE_VERSION="5.1.2600.5781" BIN_PRODUCT_VERSION="5.1.2600.5781" PRODUCT_VERSION="5.1.2600.5781" FILE_DESCRIPTION="Библиотека клиента Windows NT BASE API" COMPANY_NAME="Корпорация Майкрософт" PRODUCT_NAME="Операционная система Microsoft® Windows®" FILE_VERSION="5.1.2600.5781 (xpsp_sp3_gdr.090321-1317)" ORIGINAL_FILENAME="kernel32" INTERNAL_NAME="kernel32" LEGAL_COPYRIGHT="© Корпорация Майкрософт. Все права защищены." VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x40004" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0xF731E" LINKER_VERSION="0x50001" UPTO_BIN_FILE_VERSION="5.1.2600.5781" UPTO_BIN_PRODUCT_VERSION="5.1.2600.5781" LINK_DATE="03/21/2009 14:09:06" UPTO_LINK_DATE="03/21/2009 14:09:06" VER_LANGUAGE="Русский [0x419]" />
</EXE>
<EXE NAME="kernel32.dll" FILTER="GRABMI_FILTER_THISFILEONLY">
   <MATCHING_FILE NAME="kernel32.dll" SIZE="995840" CHECKSUM="0xC3003E57" BIN_FILE_VERSION="5.1.2600.5781" BIN_PRODUCT_VERSION="5.1.2600.5781" PRODUCT_VERSION="5.1.2600.5781" FILE_DESCRIPTION="Библиотека клиента Windows NT BASE API" COMPANY_NAME="Корпорация Майкрософт" PRODUCT_NAME="Операционная система Microsoft® Windows®" FILE_VERSION="5.1.2600.5781 (xpsp_sp3_gdr.090321-1317)" ORIGINAL_FILENAME="kernel32" INTERNAL_NAME="kernel32" LEGAL_COPYRIGHT="© Корпорация Майкрософт. Все права защищены." VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x40004" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0xF731E" LINKER_VERSION="0x50001" UPTO_BIN_FILE_VERSION="5.1.2600.5781" UPTO_BIN_PRODUCT_VERSION="5.1.2600.5781" LINK_DATE="03/21/2009 14:09:06" UPTO_LINK_DATE="03/21/2009 14:09:06" VER_LANGUAGE="Русский [0x419]" />
</EXE>
</DATABASE>


И. Павел   (2010-02-09 10:10:00) [36]


> Германн ©

У пользователя не запускалась программа. Я написал несколько - выяснил, что проблема возникает, если добавить ADOConnection. У других пользователей этих проблем нет.


> brother ©

Код настоящей программы большой - программа работает с SQL SERVER. Код маленьких, наверное, приводить не нужно, там его и нет, кроме кода от vcl


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

там есть тех.подробности, что там писано?


Германн   (2010-02-09 10:05:00) [38]


> Написал 2 программки на Delphi 2005

Этого мало для статистического анализа. Вот двести (ну пусть не двести, так хотя бы двадцать) напишешь, тогда можно будет что-то сказать.


brother   (2010-02-09 10:05:00) [39]

что программы вообще должны делать?
где код?


Sergey13   (2010-02-09 10:02:00) [40]

> [0] И. Павел ©   (09.02.10 09:57)

Говорят, что среднестатистический вопрос в игре "Что? Где? Когда?" звучит примерно так: "А для чего служит эта хреновина в нашей губернии?".
ИМХО, твой вопрос здорово это напоминает.


Страницы:   1 2

Наверх

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