![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вылетает окно "Система выполнила недопустимую операцию..." [D2005, XP]
И. Павел © (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)
Говорят, что среднестатистический вопрос в игре "Что? Где? Когда?" звучит примерно так: "А для чего служит эта хреновина в нашей губернии?".
ИМХО, твой вопрос здорово это напоминает.