Ошибка exception eoutofresources in module udl exe at 0009f63a

 
Piter ©

 
(2004-05-23 14:08)
[0]

Ловлю баг в программе, возникает периодически :(
Но вот тут добился, что одна и таже последовательность действий приводит к ошибке.
Непосредственно ошибка возникает в такой функции:

var
 i:integer;
begin
 setlength(ArrForm, length(ArrForm)+1);
 i:=High(ArrForm);
 ArrForm[i]:=TMDIChild.Create(MainForm); // Ошибка

где

ArrForm: TArrayMDIChild;
TArrayMDIChild = array of TMDIChild ;

TMDIChild соответствено Child форма, MainForm — главная форма (приложение MDI).

Ошибку пишет такую:

EOutOfResources with message "Дочерние окна не могут иметь меню"

Никак не могу понять — что криминального в этих строчках. Если у кого есть какие предположения — высказывайтесь.
Абсолютно не понимаю почему EOutOfResource, формы всего две.

В VCL ошибка начинается в процедуре ReadIcon.

Icon := CreateIcon(HInstance, IconSize.X, IconSize.Y,
           XorInfo.bmPlanes, XorInfo.bmBitsPixel, AndMem, XorMem);
         if Icon = 0 then GDIError;

Вот Icon как раз 0, вызывается GDIError и выводится ошибка…

P.S. Не надо спрашивать зачем нужен ArrForm. Нужен и все.


 
Piter ©

 
(2004-05-23 21:19)
[1]

Ну неужто никаких идей, скажите хоть что-нибудь


 
Polevi ©

 
(2004-05-23 21:27)
[2]

FormStyle ?


 
Anatoly Podgoretsky ©

 
(2004-05-23 21:36)
[3]

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


 
Piter ©

 
(2004-05-23 23:18)
[4]

Polevi (23.05.04 21:27) [2]
FormStyle ?

А что с ним не так?
У MainForm он fsMDIForm, у TMDIChild он fsMDIChild

Anatoly Podgoretsky (23.05.04 21:36) [3]
Трудно отвечать, поскольку спрашивать запрещаешь

Вы про ArrForm? ну нужен он мне, какая разница зачем? Ведь можно же так сделать, ничего криминального нету? Массив форм, что такого…
Я не про эффективность программы, я про ошибку — почему она вылезает?
Тем более такая странная… не хватает ресурсов… а еще точнее CreateIcon приводит к ошибке. Что за нафиг?


 
Cobalt ©

 
(2004-05-24 01:41)
[5]

И на каком количестве дочрних окон это происходит?
Или же ошибка происходит в создании, а не в массиве?
Что у тебя в OnCreate TMDIChild?
Попробуй создать тестовый примерчик работы с MDI — код тот же самый в том, что касается создания и удаления. Будут ошибки?


 
Piter ©

 
(2004-05-24 19:59)
[6]

Cobalt (24.05.04 01:41) [5]
И на каком количестве дочрних окон это происходит?

на абсолютно разном. Когда как… не в том дело, видимо…

Cobalt (24.05.04 01:41) [5]
Или же ошибка происходит в создании, а не в массиве?

я указал на какой строчке происходит ошибка. Также я указал, где в недрах VCL происходит ошибка…

Cobalt (24.05.04 01:41) [5]
Что у тебя в OnCreate TMDIChild?

одна строчка:

procedure TMDIChild.FormCreate(Sender: TObject);
begin
 Sock:=nil;
end;

Где Sock: TMySock;
TMySock это класс для управления передачей информации по сети. В любом случае, он здесь не при чем.

Cobalt (24.05.04 01:41) [5]
Попробуй создать тестовый примерчик работы с MDI — код тот же самый в том, что касается создания и удаления. Будут ошибки?

конечно, нет! Тут то ошибка происходит черт знает по каким числам.

Я просто не знаю что думать. Может, проверить состояние каких-нибудь переменных или еще чего. Ведь ошибка возникает при вызове WinApi функции CreateIcon… что же делать…


 
Piter ©

 
(2004-05-24 22:05)
[7]

Народ, помогайте! А то я удавлюсь…


 
Cobalt ©

 
(2004-05-24 23:17)
[8]

Ну, что могу посоветовать — удаляй из проекта разные компоненты пока не избавишься от ошибки. А как найдёшь — с каким компонентом ошибка выскакивает — начинай отлаживать.
P.S. используешь где низкоуровневые(WinAPI) функции?
P.P.S. и не «помогайте», а  помогите.


 
Polevi ©

 
(2004-05-24 23:18)
[9]

конструктор TMDIChild


 
Polevi ©

 
(2004-05-24 23:19)
[10]

заодно проверь не перегружен ли CreateParams


 
Piter ©

 
(2004-05-24 23:52)
[11]

Polevi (24.05.04 23:18) [9]
конструктор TMDIChild

чего? Я не понял. Обработчик OnCreate я привел…
А конструктор, естественно, от TCustomForm. Как у формы можно конструктор перекрыть…

Polevi (24.05.04 23:19) [10]
заодно проверь не перегружен ли CreateParams

я не перегружал… значит, не перегружен.

Cobalt (24.05.04 23:17) [8]
Ну, что могу посоветовать — удаляй из проекта разные компоненты пока не избавишься от ошибки

ты так шутишь? И что удалять? Может, без форм обойтись?

Cobalt (24.05.04 23:17) [8]
А как найдёшь — с каким компонентом ошибка выскакивает — начинай отлаживать.

я уже говорил, что ошибка возникает в вызове WinApi функции CreateIcon, она возвращает ноль, то есть неудачный вызов.

GetLastError дает "EOutOfResources with message "Дочерние окна не могут иметь меню"
Я согласен, что это у меня дочернее окно. Но про какое меню идет речь? Там у дочерних форм есть PopUp меню… даже два их… но почему она не может их иметь? Странности какие-то

P.S. Чувствую, в ФИДО мне нужно… или вот попробую задать вопрос на «Королевстве»…


 
nikkie ©

 
(2004-05-25 00:34)
[12]

>Как у формы можно конструктор перекрыть…
элементарно. также как и у любого другого класса.

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


 
Piter ©

 
(2004-05-25 09:48)
[13]

nikkie (25.05.04 00:34) [12]
элементарно. также как и у любого другого класса

да? Приведи пример :)

nikkie (25.05.04 00:34) [12]
создай новое MDI-приложение, где написан тот код, который ты здесь привел. ошибки нет? значит ошибка вызвана не им, а чем-то другим в твоем проекте

ты понимаешь, что ошибка возникает раз в сто обращений. МожетЮ даже реже. Активно работает с базой данных. Результаты работы выносит на форму…
Что вычищать? Что удалять? Удалив хоть немного, приложение станет неработоспособным… тестировать его будет невозможно… (как можно тестировать неработающее приложение?)
Не тупо же создавать и удалять эти формы?


 
DiamondShark ©

 
(2004-05-25 13:57)
[14]


> тестировать его будет невозможно

Ещё невозможнее тестировать приложение с миллионом функций.
Если у тебя нет архива версий, то откатиться до последней стабильной конфигурации нельзя. Тебе предлагают единственный возможный выход — исключать функциональность до получения стабильной программы. Пусть она будет состоять на 90% из пустышек и заглушек. Но ты хоть как-то очертишь круг возможных причин. Иначе можно до потери пульса медитировать над строчкой, где происходит исключение, и так и не добиться просветления. Пойми, что исключение — это последнее следствие возможно очень большого количества причин.


 
Piter ©

 
(2004-05-25 18:15)
[15]

DiamondShark (25.05.04 13:57) [14]
исключать функциональность до получения стабильной программы

а как ее тестировать?!?! Просто открывать окна? И ничего в них не отображать?


 
Cobalt ©

 
(2004-05-25 18:46)
[16]

>  Просто открывать окна? И ничего в них не отображать?
Совершенно верно. Об этом и велась речь (заглушки).


 
Piter ©

 
(2004-05-25 20:16)
[17]

Cobalt (25.05.04 18:46) [16]
>  Просто открывать окна? И ничего в них не отображать?
Совершенно верно. Об этом и велась речь (заглушки).

глупо. Посмотрите на код. Он же верный, элементарный. Ну поставлю я его в цикл? Сделает он 100 окон, поток закроет… и что?


 
nikkie ©

 
(2004-05-25 21:08)
[18]

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


 
Piter ©

 
(2004-05-25 23:51)
[19]

nikkie (25.05.04 21:08) [18]
посмотрели. ошибок в нем нет. значит, ошибка где-то в другом месте. что дальше?

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

Ошибка пренеприятнейшая, выскакивает очень периодически. Помнишь, ты сам говорил, что у тебя иногда в программе выскакивает AV (в DMClient»е, по-моему). Вот это по типу такой ошибки, только возникает почаще,  я так понимаю.
Ну что можно сказать? Знал бы в чем дело — ликвидировал.
Вы предлагаете убрать некие составляющие. Но это нереально. Вы видели код создания MDI окна? Он простейший, естественно, я и не думал, что причина в нем.
Значит, ошибка в другом месте кода, а кода много. Все не выложишь.
И почему я задал вопрос — для меня остается непонятным что за ошибка.

EOutOfResources with message "Дочерние окна не могут иметь меню"

даже тип ошибки EOutOfResources никак не клеится с расшифровкой "Дочерние окна не могут иметь меню".
Если не могут — так это не то, чтобы не хватает ресурсов, это должен быть другой тип ошибки.
И сама фраза "Дочерние окна не могут иметь меню" — ну ведь нету там никаких меню…

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

И тут еще одна неприятность произошла. Я нашел последовательность действий, которая всегда приводила к ошибке, слава богу хоть что-то постоянное. Но вот с недавних пор это уже не приводит к ошибкe. После перезагрузки что ли изменилось? Мистика, в общем…

Мне пока в голову пришло только одно, коли уж ошибка редко вылезает, то тупо эмулировать действие пользователя. Цикл что ли какой хитроумный написать, ну типа пользователь жмет на кнопку — выполняется процедура. А мне из цикла самому эти процедуры вызывать, как будто пользователь работает. И все это поставить работать непрерывно, должна же ошибка вылезать…
В общем, писать под программу комплекс тестирования. Но хлопотное это дело, если у кого есть какие соображения — я бы лучше их выслушал…


 
Piter ©

 
(2004-05-26 18:52)
[20]

Никто ничего не скажет?


 
nikkie ©

 
(2004-05-26 20:01)
[21]

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

медитация на приведенным кодом ничего не даст. наверное, надо верить Дельфи — проблема действительно в нехватке ресурсов. Особенно, если после разового возникновения этой ошибки, она возникает постоянно до перезапуска программы, скажем.

честно говоря, не знаю тула, которым можно было бы отследить используемые ресурсы. когда-то под 98-ми пользовался программкой Resource Meter — если программа небрежно обращалась с ресурсами, то это было заметно. если проблема с ресурсами и ты можешь запустить программу под 9x — ошибка станет очевиднее.

заметь, что ты даже не описал, с чем именно работает твоя программа. по оброненным тобой фразам понятно, что там есть работа с базой и сокетами. могу предположить, что в ней есть также WebBrowser. если с ним ты обращаешься где-то неаккуратно, то вполне возможна утечка из-за него.


 
Cobalt ©

 
(2004-05-26 20:14)
[22]

Пропробуй использовать MemProof — может у тебя где утечка
Используешь где низкоуровневые(WinAPI) функции?
Может, хуки есть какие (например, от сторонних программ)?


 
Piter ©

 
(2004-05-26 22:51)
[23]

nikkie (26.05.04 20:01) [21]
Особенно, если после разового возникновения этой ошибки, она возникает постоянно до перезапуска программы

да, так и есть,но думаю из-за того, что программа просто стала неправильно работать. При попытке продолжить работу она зависает, выкидывает AV и т.д.

nikkie (26.05.04 20:01) [21]
наверное, надо верить Дельфи — проблема действительно в нехватке ресурсов

ну Дельфи тут вообще не при чем. Я уже говорил несколько раз, что ошибка начинается с CreateIcon, она возвращает ноль. И после нее GetLastError возвращает такую строчку с ошибкой… так что можно доверять Windows, а я ей не доверяю :)
Насчет нехватки ресурсов — да не может быть, ошибка может проявиться в первую минуту работы. Один раз кликнуть по теме, откроется ВТОРОЕ окно и ошибка будет. А может долго работать с закрытием/открытием множества окон и без всяких ошибок…

nikkie (26.05.04 20:01) [21]
заметь, что ты даже не описал, с чем именно работает твоя программа

да собственно говоря это Magic Forum :)
Зря я, наверное, сказал, ибо теперь ты не будешь помогать :( получается, своими руками конкурентов плодишь…

nikkie (26.05.04 20:01) [21]
могу предположить, что в ней есть также WebBrowser. если с ним ты обращаешься где-то неаккуратно, то вполне возможна утечка из-за него

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

Cobalt (26.05.04 20:14) [22]
Используешь где низкоуровневые(WinAPI) функции?

сосбтвенноручно не использую.

Cobalt (26.05.04 20:14) [22]
Может, хуки есть какие (например, от сторонних программ)?

нету

Я вот чего совсем не понимаю, почему CreateIcon возвращает ноль? Ну вот уперлось мне это… думаю, если понять почему — дальше можно строить умозаключения.
Может кто привести пример, чтобы CreateIcon возвращала ноль? Это сколько же программа должна сожрать памяти, чтобы не удалось выполнить CreateIcon? Аналогичная ситуация с CreateWindow — не могу представить сколько надо создать окон, чтобы она вернула ноль. Даже в Win95 можно создать более 16000 окон… думаю, иконок можно создать не меньше…
все мне было бы понятно, если бы не «нехватка ресурсов». Ну черт побери — когда не хватает ресурсов, машина хоть бы тормозить стала что ли… ничего подобного…

Я вот блин не догадался проверить какие параметры передаются в функцию CreateIcon, может они неправильные, функция возвращает ноль, а GetLastError просто возвращает некорректную ошибку, просто глюк windows? Бывает же такое

P.S. Кстати, Nikkie, ты не правил EmbeddedNS в последнее время? А то может ты исправил глюк там какой…


 
Piter ©

 
(2004-05-26 22:52)
[24]

Вот, кстати, ответ на королевстве:

setlength(ArrForm, length(ArrForm)+1);
i:=High(ArrForm);
ArrForm[i]:=TMDIChild.Create(MainForm); // Ошибка

подобным образом создавал массив объектов,
глючило, пока не сделал в другом порядке

TempObject:=TObject.Create;
setlength(ObjectsArray,length(ObjectsArray)+1);
ObjectsArray[length(ObjectsArray)-1]:=TempObject;

По-моему, это уже шаманство какое-то, но я к нему готов…


 
Игорь Шевченко ©

 
(2004-05-26 23:08)
[25]


> Может кто привести пример, чтобы CreateIcon возвращала ноль?
>

SysErrorMessage(GetLastError) в студию.


 
nikkie ©

 
(2004-05-26 23:24)
[26]

>Piter
на все твои вопросы «почему» я ответить не могу. и не хочется гадательством заниматься. одна попытка — если не получиться угадать в чем твоя проблема, то тебе один путь — см. [14] DiamondShark

и вот попытка: у тебя в коде есть код типа WebBrowser.Document?

>да собственно говоря это Magic Forum :)
да я, собственно, догадываюсь. про WebBrowser я не просто так сказал. ты просто учитывай, что не все как я знают, какого рода программу ты пишешь и на какой операционной системе тестируешь. так что когда задаешь вопрос, то не лишним будет описать программу и ОС.

>ты не правил EmbeddedNS в последнее время?
первое и последнее (пока) изменение
(*  v1.01  03/04/2004 NA                                                      *)
(*        A problem with thread creation is fixed.                            *)
(*        The problem sometimes resulted in AV.                               *)

>Вот, кстати, ответ на королевстве:
и после этого говорят, что на королевстве уровень отвечающих выше :))
ну попробуй пошаманить, вдруг получится.


 
Piter ©

 
(2004-05-30 18:12)
[27]

up


 
RealRascal ©

 
(2004-05-30 22:16)
[28]


> Cobalt (24.05.04 23:17) [8]
> Ну, что могу посоветовать — удаляй из проекта разные компоненты
> пока не избавишься от ошибки
>
> ты так шутишь? И что удалять? Может, без форм обойтись?

А это действительно может быть дельной мыслью. У меня как-то было такое — написал основной код, начал занимаца приукрашательством, удобства всякие навешивать, батончики, мемошки…
И вот тут фигня какая-то (мистическая прямо таки:)) стала происходить:
Кладешь на форму чекбокс, компилишь, запускаешь на вычисления — AV.
Убираешь чекбокс, копмилишь, запускаешь на вычисления — все ок.
Никаких изменений в коде, событий на чекбокс никаких, просто — AV и все тут! Хоть ты тресни! Так я до истины не докопался, времени небыло, надо было курсач расчитывать, плюнул я на это и без чекбокса этого обошелся. А народ в этом форуме мне говорил, что это из-за использования указателей (или что-то там вроде этого). Еще говорили про Range Checking, но мне это не помогло…


 
kombat ©

 
(2004-05-31 01:21)
[29]

2 RealRascal ©
Это да, иногда такие непонятки возникают. Кинул на форму JvPopupMenu, никакого кода на нем нет. И при закрытии приложения с незакрытой формой с JvPopupMenu вылазит AV. Заменил на обычный PopupMenu — все пришло в норму.
Это конечно не мистика, все как-то объясняется, но …


 
Piter ©

 
(2004-05-31 18:30)
[30]

nikkie (25.05.04 00:34) [12]
>Как у формы можно конструктор перекрыть…
элементарно. также как и у любого другого класса

Nikkie, ты так и не привел примера!


 
kombat ©

 
(2004-05-31 18:35)
[31]

constructor Create(AOwner: TComponent); overload; override;
constructor Create(AOwner: TComponent; AParent: TWinControl);      reintroduce; overload;

===================================================

constructor TfrmBIT_BaseForm.Create(AOwner: TComponent);
begin
 FAsChild := False; { форма не внедренная, базовый конструктор }
 inherited Create(AOwner);
end; { end of Create }
//************************************************

constructor TfrmBIT_BaseForm.Create(AOwner: TComponent; AParent: TWinControl);
begin
 FAsChild := True; { форма внедренная, переопределенный конструктор }
 FTempParent := AParent;
 inherited Create(AOwner);
end; { end of Create }


 
Piter ©

 
(2004-05-31 18:48)
[32]

А TfrmBIT_BaseForm = class(TForm) ?


 
kombat ©

 
(2004-05-31 18:53)
[33]

TfrmBIT_BaseForm = class(TForm)
и такое есть, но чуть выше в файле )))
или под перекрытием конструктора что-то другое имелось ввиду?


 
Piter ©

 
(2004-05-31 18:59)
[34]

kombat (31.05.04 18:53) [33]

и чего, пример работает?


 
kombat ©

 
(2004-05-31 19:05)
[35]

конечно, эта идея взята из С.Тейксейра, К.Пачеко — Delphi 5 Руководство разработчика 1. Если вызываем переопределенный конструктор в передаем ему AParent = TPanel, то созданная форма становится внедренной в этот TPanel. Естестенно для этого нужно описать еще пару процедурок типа CreateParams, но основная идея с конструктором.
Это кстати кусок из работающего проекта.


 
Piter ©

 
(2004-05-31 19:10)
[36]

kombat (31.05.04 19:05) [35]
Если вызываем переопределенный конструктор в передаем ему AParent = TPanel, то созданная форма становится внедренной в этот TPanel. Естестенно для этого нужно описать еще пару процедурок типа CreateParams, но основная идея с конструктором

Просто Nikkie говорил, что:

>элементарно. также как и у любого другого класса

вот мне кажется, что не так, как у любого класса…


 
kombat ©

 
(2004-05-31 19:17)
[37]

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


 
nikkie ©

 
(2004-05-31 22:32)
[38]

детский сад, блин…

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
 TForm1 = class(TForm)
 private
   { Private declarations }
 public
   { Public declarations }
   constructor Create(AOwner: TComponent); override;
 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}

constructor TForm1.Create(AOwner: TComponent);
begin
 ShowMessage("aaa");
 inherited;
end;

end.


 
Gero ©

 
(2004-05-31 22:43)
[39]


> [38] nikkie ©   (31.05.04 22:32)
> детский сад, блин…

Точно.


 
kombat ©

 
(2004-05-31 23:14)
[40]

а в чем детский сад?


Модераторы: Анастасия, Дмитрий

size_t

Новичок
Новичок
Сообщения: 2
Зарегистрирован: Сб сен 25, 2010 2:26 pm

Перестала запускаться программа: eOutOfResourses в vcl60.bpl

Несколько дней назад перестал запускаться MoneyTracker 1.2.10.656 с вот таким сообщением:

Изображение

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

Менялась конфигурация железа — подключен новый монитор. Может, дело в этом?


Дмитрий

Разработчик
Разработчик
Сообщения: 1697
Зарегистрирован: Ср ноя 21, 2007 6:18 am
Контактная информация:

Re: Перестала запускаться программа: eOutOfResourses в vcl60

Сообщение

Дмитрий » Пн сен 27, 2010 12:10 pm

size_t писал(а):Несколько дней назад перестал запускаться MoneyTracker 1.2.10.656 с вот таким сообщением:

Изображение

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

Менялась конфигурация железа — подключен новый монитор. Может, дело в этом?

Монитор подключен вторым или вместо старого? Подключен ли новый монитор к ноутбуку и помогает ли запуску программы на ноутбуке отключение монитора?


size_t

Новичок
Новичок
Сообщения: 2
Зарегистрирован: Сб сен 25, 2010 2:26 pm

Сообщение

size_t » Сб окт 02, 2010 11:12 pm

Монитор подключен вторым и вместо старого :) То есть старый теперь стал дополнительным, новый — основным. К ноутбуку ничего не подключалось и на нем ничего не менялось ни в программной, ни в аппаратной части.

Как водится, в туманных ситуациях решает бубен. Помогла переустановка Firebird, и MoneyTracker (поверх) — на компе с базой и на ноутбуке. Программа стала запускаться как ни в чем не бывало. Что это было — так и осталось для меня загадкой.


wyw78

Новичок
Новичок
Сообщения: 1
Зарегистрирован: Пн дек 19, 2011 8:48 pm

Re: Перестала запускаться программа: eOutOfResourses в vcl60

Сообщение

wyw78 » Пн дек 19, 2011 9:02 pm

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

Exception EOutOfResources in module vcl60.bpl at 000077A0.
Неверный дескриптор.

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



Coldman

Новичок
Сообщения: 1
Зарегистрирован: 28 авг 2008, 05:15

Ошибка при запуске

Здравствуйте. Возникла следующая проблема: при попытке запустить программу АТП-Эколог появляется полоска загрузки, которая потом обрывается, и возникает окно ошибки. Текст ошибки:
Excption EDBEngineError in modul Atpw.exe at 000AE9ee
An error occured while attempting to initialize he Borland Database Engine (error $3E06)
На компьютере установлена Win XP, ошибка возникает как под учетной записью администратора, так и под ограниченной записью пользователя.

honey_MV

Новичок
Сообщения: 31
Зарегистрирован: 26 авг 2009, 13:52
Откуда: Н.Новгород
Благодарил (а): 6 раз
Поблагодарили: 2 раза

Re: Ошибка при запуске

Сообщение

honey_MV » 14 дек 2013, 08:03

На компьютерах стоит одинаковый антивирус — Доктор Веб. На одно из компьютеров мне все таки удалось решить эту проблему, но на других программа никак не настраивается. Кстати в нашей базе не так уж много объектов порядка 15-20.
Очень жаль, что сотрудники интеграла не смогли помочь. Может у вас есть организации или сотрудники, с которыми вы работаете в Нижнем Новгороде?

Аватара пользователя

Вадим Зыков

Интеграл
Сообщения: 5532
Зарегистрирован: 27 июн 2005, 13:41
Откуда: Санкт-Петербург
Благодарил (а): 245 раз
Поблагодарили: 2714 раз
Контактная информация:

Re: Ошибка при запуске

Сообщение

Вадим Зыков » 16 дек 2013, 08:55

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

Интегрируй форум в Яндекс

P.S. Вопросы по работе с программами или выбору программ прошу писать либо на форуме в соответствующих темах, либо по электронной почте. В ЛС на такие вопросы не отвечаю. Прошу понять правильно.

Аватара пользователя

Вадим Зыков

Интеграл
Сообщения: 5532
Зарегистрирован: 27 июн 2005, 13:41
Откуда: Санкт-Петербург
Благодарил (а): 245 раз
Поблагодарили: 2714 раз
Контактная информация:

Re: Ошибка при запуске

Сообщение

Вадим Зыков » 01 апр 2015, 13:40

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

Интегрируй форум в Яндекс

P.S. Вопросы по работе с программами или выбору программ прошу писать либо на форуме в соответствующих темах, либо по электронной почте. В ЛС на такие вопросы не отвечаю. Прошу понять правильно.


Аватара пользователя

AleksandrZloi

Новичок
Сообщения: 3
Зарегистрирован: 14 апр 2020, 22:21
Откуда: Санкт-Петербург

Re: Ошибка при запуске

Сообщение

AleksandrZloi » 14 апр 2020, 22:35

Доброго времени суток,
Изначальна не мог сформировать отчет выдавал ошибку от том что файл TEMP.RTF не найден (хотя сам файл в папке-каталоге программы присутствовал).
Переустановил блок АТП-эколог, теперь выдает следующую ошибку при запуске программы exception edbengineerror in module atpw.exe at 000ac776

1.jpg

Подскажите алгоритм действия.

Ошибка при обращении к реестру.

Paradox98
Автор темы
Paradox98
Автор темы
Репутация: 0
Сообщения: 1
Зарегистрирован: 15.05.2014
С нами: 9 лет 1 месяц
Профессия: инженер

Доброго времени суток! При запуске Оперативной задачи (7.6.3) выскакивает ошибка
«Exception EOIeSysError in module Orion.exe at 00088EFD. Ошибка при обращении к реестру OLE».
Администратор базы данных запускается. Операционная системе Win7 64-разрядная. Так же пробовал устанавливать 7.6.2, при запуске та же ошибка. Подскажите что я не так делаю.
Спасибо!




loskar
loskar
Репутация: 0
Сообщения: 1
Зарегистрирован: 07.05.2015
С нами: 8 лет 1 месяц
Профессия: наладчик

Непрочитанное сообщение #4 loskar » 21.07.2015, 22:41

Samodel писал(а):Запустите софт в режиме совместимости с WinXP SP3.

ребят пробывал оба варианта не получается запустить пишет туже ошибку вин 7 64 и второй комп вин 8. 64


Mixail 51 M
Активный участник
Активный участник
Аватара
Mixail 51 M
Активный участник
Активный участник
Возраст: 42
Репутация: 102
Сообщения: 2810
Зарегистрирован: 21.03.2015
С нами: 8 лет 3 месяца
Профессия: инженер по ПБ
Откуда: г. Мурманск

Непрочитанное сообщение #5 Mixail 51 » 21.07.2015, 23:52

АРМ случайно не в Program Files установлен, если да то переустанавливайте просто в отдельно созданную папку на системном диске.

Не ошибается только тот кто не работает.


sibguardian M
Аватара
sibguardian M
Возраст: 55
Репутация: 11
Сообщения: 163
Зарегистрирован: 24.09.2011
С нами: 11 лет 8 месяцев
Профессия: инженер
Откуда: Новосибирск

Непрочитанное сообщение #6 sibguardian » 22.07.2015, 08:57

Paradox98 писал(а):Доброго времени суток! При запуске Оперативной задачи (7.6.3) выскакивает ошибка
«Exception EOIeSysError in module Orion.exe at 00088EFD. Ошибка при обращении к реестру OLE».
Администратор базы данных запускается. Операционная системе Win7 64-разрядная. Так же пробовал устанавливать 7.6.2, при запуске та же ошибка. Подскажите что я не так делаю.
Спасибо!

Контроль учетных записей UAC отключите, и запуск программы с правами Администратора — иначе полномочий не хватит.


sibguardian M
Аватара
sibguardian M
Возраст: 55
Репутация: 11
Сообщения: 163
Зарегистрирован: 24.09.2011
С нами: 11 лет 8 месяцев
Профессия: инженер
Откуда: Новосибирск

Непрочитанное сообщение #7 sibguardian » 22.07.2015, 09:03

Mixail 51 писал(а):АРМ случайно не в Program Files установлен, если да то переустанавливайте просто в отдельно созданную папку на системном диске.

А вот это не критично — абсолютно. В Windows 7 все работает и из Program Files, в Win 8 желательно в другую папку.

Вложения
Орион в Program Files.png


Sia-Ori
Активный участник
Активный участник
Sia-Ori
Активный участник
Активный участник
Возраст: 53
Репутация: 5
Сообщения: 774
Зарегистрирован: 04.02.2012
С нами: 11 лет 4 месяца
Профессия: инженер СКУД
Откуда: Ростов на Дону

Непрочитанное сообщение #8 Sia-Ori » 22.07.2015, 09:55

Там же ещё БДЕшный файл какой-то, pdoxuser.net, что ли, пытается писаться в корневом каталоге, что Вин8 не нравится. И в настройках БДЕ его можно перенести в более подходящее место.
Всё продавливается, и без отключения UAC.


Mixail 51 M
Активный участник
Активный участник
Аватара
Mixail 51 M
Активный участник
Активный участник
Возраст: 42
Репутация: 102
Сообщения: 2810
Зарегистрирован: 21.03.2015
С нами: 8 лет 3 месяца
Профессия: инженер по ПБ
Откуда: г. Мурманск

Непрочитанное сообщение #9 Mixail 51 » 22.07.2015, 12:33

sibguardian писал(а):

Mixail 51 писал(а):АРМ случайно не в Program Files установлен, если да то переустанавливайте просто в отдельно созданную папку на системном диске.

А вот это не критично — абсолютно. В Windows 7 все работает и из Program Files, в Win 8 желательно в другую папку.

Я процитировал ответ разработчика Николая Комарова, упоминание об этом есть даже в вебинаре про установку и настройку АРМ. Также играет роль разрядность системы. У меня на W7 x64 максимальная заработало только в отдельной папке, и тоже не запускалась ОЗ с такой же ошибкой. Поэтому останусь при своём мнении.

Не ошибается только тот кто не работает.


sibguardian M
Аватара
sibguardian M
Возраст: 55
Репутация: 11
Сообщения: 163
Зарегистрирован: 24.09.2011
С нами: 11 лет 8 месяцев
Профессия: инженер
Откуда: Новосибирск

Непрочитанное сообщение #10 sibguardian » 23.07.2015, 09:16

Mixail 51 писал(а):Я процитировал ответ разработчика Николая Комарова, упоминание об этом есть даже в вебинаре про установку и настройку АРМ. Также играет роль разрядность системы.

Ну, что это цитата, нигде ранее сказано не было, и к тому же разработчики очень «веселые ребята» — иногда такое советуют, типа: отключить (не устанавливать) антивирус, не ставить системные обновления, не ставить «лишних» программ и пр., иначе работа не гарантируется. Так и хочется им верить…

Могу только констатировать что АРМ «Орион» с Win7 жить намного легче, чем с Win8 — там есть небольшие проблемы, это так.



  • 12
    6543

    DruG
    Перейти к последнему сообщению
    11.04.2022, 17:54
  • 1
    1399

    google
    Перейти к последнему сообщению
    25.02.2019, 09:17
  • 1
    643

    DruG
    Перейти к последнему сообщению
    12.05.2020, 06:36
  • 1
    1011

    Shym
    Перейти к последнему сообщению
    31.01.2020, 19:55
  • 0
    2166

    graunf
    Перейти к последнему сообщению
    08.11.2018, 16:30
  • 0
    362

    deadbeat321
    Перейти к последнему сообщению
    16.12.2022, 17:00
  • 3
    589

    DruG
    Перейти к последнему сообщению
    21.12.2021, 17:31
  • 1
    198

    5pconet
    Перейти к последнему сообщению
    11.02.2023, 16:44
  • 1
    1980

    DruG
    Перейти к последнему сообщению
    17.12.2018, 17:46
  • 4
    2094

    triiks
    Перейти к последнему сообщению
    20.10.2018, 00:12

Вернуться в «АРМ Орион»

 
Piter ©
 
(2004-05-23 14:08)
[0]

Ловлю баг в программе, возникает периодически :(
Но вот тут добился, что одна и таже последовательность действий приводит к ошибке.
Непосредственно ошибка возникает в такой функции:

var
 i:integer;
begin
 setlength(ArrForm, length(ArrForm)+1);
 i:=High(ArrForm);
 ArrForm[i]:=TMDIChild.Create(MainForm); // Ошибка

где

ArrForm: TArrayMDIChild;
TArrayMDIChild = array of TMDIChild ;

TMDIChild соответствено Child форма, MainForm — главная форма (приложение MDI).

Ошибку пишет такую:

EOutOfResources with message "Дочерние окна не могут иметь меню"

Никак не могу понять — что криминального в этих строчках. Если у кого есть какие предположения — высказывайтесь.
Абсолютно не понимаю почему EOutOfResource, формы всего две.

В VCL ошибка начинается в процедуре ReadIcon.

Icon := CreateIcon(HInstance, IconSize.X, IconSize.Y,
           XorInfo.bmPlanes, XorInfo.bmBitsPixel, AndMem, XorMem);
         if Icon = 0 then GDIError;

Вот Icon как раз 0, вызывается GDIError и выводится ошибка…

P.S. Не надо спрашивать зачем нужен ArrForm. Нужен и все.


 
Piter ©
 
(2004-05-23 21:19)
[1]

Ну неужто никаких идей, скажите хоть что-нибудь


 
Polevi ©
 
(2004-05-23 21:27)
[2]

FormStyle ?


 
Anatoly Podgoretsky ©
 
(2004-05-23 21:36)
[3]

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


 
Piter ©
 
(2004-05-23 23:18)
[4]

Polevi (23.05.04 21:27) [2]
FormStyle ?

А что с ним не так?
У MainForm он fsMDIForm, у TMDIChild он fsMDIChild

Anatoly Podgoretsky (23.05.04 21:36) [3]
Трудно отвечать, поскольку спрашивать запрещаешь

Вы про ArrForm? ну нужен он мне, какая разница зачем? Ведь можно же так сделать, ничего криминального нету? Массив форм, что такого…
Я не про эффективность программы, я про ошибку — почему она вылезает?
Тем более такая странная… не хватает ресурсов… а еще точнее CreateIcon приводит к ошибке. Что за нафиг?


 
Cobalt ©
 
(2004-05-24 01:41)
[5]

И на каком количестве дочрних окон это происходит?
Или же ошибка происходит в создании, а не в массиве?
Что у тебя в OnCreate TMDIChild?
Попробуй создать тестовый примерчик работы с MDI — код тот же самый в том, что касается создания и удаления. Будут ошибки?


 
Piter ©
 
(2004-05-24 19:59)
[6]

Cobalt (24.05.04 01:41) [5]
И на каком количестве дочрних окон это происходит?

на абсолютно разном. Когда как… не в том дело, видимо…

Cobalt (24.05.04 01:41) [5]
Или же ошибка происходит в создании, а не в массиве?

я указал на какой строчке происходит ошибка. Также я указал, где в недрах VCL происходит ошибка…

Cobalt (24.05.04 01:41) [5]
Что у тебя в OnCreate TMDIChild?

одна строчка:

procedure TMDIChild.FormCreate(Sender: TObject);
begin
 Sock:=nil;
end;

Где Sock: TMySock;
TMySock это класс для управления передачей информации по сети. В любом случае, он здесь не при чем.

Cobalt (24.05.04 01:41) [5]
Попробуй создать тестовый примерчик работы с MDI — код тот же самый в том, что касается создания и удаления. Будут ошибки?

конечно, нет! Тут то ошибка происходит черт знает по каким числам.

Я просто не знаю что думать. Может, проверить состояние каких-нибудь переменных или еще чего. Ведь ошибка возникает при вызове WinApi функции CreateIcon… что же делать…


 
Piter ©
 
(2004-05-24 22:05)
[7]

Народ, помогайте! А то я удавлюсь…


 
Cobalt ©
 
(2004-05-24 23:17)
[8]

Ну, что могу посоветовать — удаляй из проекта разные компоненты пока не избавишься от ошибки. А как найдёшь — с каким компонентом ошибка выскакивает — начинай отлаживать.
P.S. используешь где низкоуровневые(WinAPI) функции?
P.P.S. и не «помогайте», а  помогите.


 
Polevi ©
 
(2004-05-24 23:18)
[9]

конструктор TMDIChild


 
Polevi ©
 
(2004-05-24 23:19)
[10]

заодно проверь не перегружен ли CreateParams


 
Piter ©
 
(2004-05-24 23:52)
[11]

Polevi (24.05.04 23:18) [9]
конструктор TMDIChild

чего? Я не понял. Обработчик OnCreate я привел…
А конструктор, естественно, от TCustomForm. Как у формы можно конструктор перекрыть…

Polevi (24.05.04 23:19) [10]
заодно проверь не перегружен ли CreateParams

я не перегружал… значит, не перегружен.

Cobalt (24.05.04 23:17) [8]
Ну, что могу посоветовать — удаляй из проекта разные компоненты пока не избавишься от ошибки

ты так шутишь? И что удалять? Может, без форм обойтись?

Cobalt (24.05.04 23:17) [8]
А как найдёшь — с каким компонентом ошибка выскакивает — начинай отлаживать.

я уже говорил, что ошибка возникает в вызове WinApi функции CreateIcon, она возвращает ноль, то есть неудачный вызов.

GetLastError дает "EOutOfResources with message "Дочерние окна не могут иметь меню"
Я согласен, что это у меня дочернее окно. Но про какое меню идет речь? Там у дочерних форм есть PopUp меню… даже два их… но почему она не может их иметь? Странности какие-то

P.S. Чувствую, в ФИДО мне нужно… или вот попробую задать вопрос на «Королевстве»…


 
nikkie ©
 
(2004-05-25 00:34)
[12]

>Как у формы можно конструктор перекрыть…
элементарно. также как и у любого другого класса.

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


 
Piter ©
 
(2004-05-25 09:48)
[13]

nikkie (25.05.04 00:34) [12]
элементарно. также как и у любого другого класса

да? Приведи пример :)

nikkie (25.05.04 00:34) [12]
создай новое MDI-приложение, где написан тот код, который ты здесь привел. ошибки нет? значит ошибка вызвана не им, а чем-то другим в твоем проекте

ты понимаешь, что ошибка возникает раз в сто обращений. МожетЮ даже реже. Активно работает с базой данных. Результаты работы выносит на форму…
Что вычищать? Что удалять? Удалив хоть немного, приложение станет неработоспособным… тестировать его будет невозможно… (как можно тестировать неработающее приложение?)
Не тупо же создавать и удалять эти формы?


 
DiamondShark ©
 
(2004-05-25 13:57)
[14]


> тестировать его будет невозможно

Ещё невозможнее тестировать приложение с миллионом функций.
Если у тебя нет архива версий, то откатиться до последней стабильной конфигурации нельзя. Тебе предлагают единственный возможный выход — исключать функциональность до получения стабильной программы. Пусть она будет состоять на 90% из пустышек и заглушек. Но ты хоть как-то очертишь круг возможных причин. Иначе можно до потери пульса медитировать над строчкой, где происходит исключение, и так и не добиться просветления. Пойми, что исключение — это последнее следствие возможно очень большого количества причин.


 
Piter ©
 
(2004-05-25 18:15)
[15]

DiamondShark (25.05.04 13:57) [14]
исключать функциональность до получения стабильной программы

а как ее тестировать?!?! Просто открывать окна? И ничего в них не отображать?


 
Cobalt ©
 
(2004-05-25 18:46)
[16]

>  Просто открывать окна? И ничего в них не отображать?
Совершенно верно. Об этом и велась речь (заглушки).


 
Piter ©
 
(2004-05-25 20:16)
[17]

Cobalt (25.05.04 18:46) [16]
>  Просто открывать окна? И ничего в них не отображать?
Совершенно верно. Об этом и велась речь (заглушки).

глупо. Посмотрите на код. Он же верный, элементарный. Ну поставлю я его в цикл? Сделает он 100 окон, поток закроет… и что?


 
nikkie ©
 
(2004-05-25 21:08)
[18]

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


 
Piter ©
 
(2004-05-25 23:51)
[19]

nikkie (25.05.04 21:08) [18]
посмотрели. ошибок в нем нет. значит, ошибка где-то в другом месте. что дальше?

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

Ошибка пренеприятнейшая, выскакивает очень периодически. Помнишь, ты сам говорил, что у тебя иногда в программе выскакивает AV (в DMClient»е, по-моему). Вот это по типу такой ошибки, только возникает почаще,  я так понимаю.
Ну что можно сказать? Знал бы в чем дело — ликвидировал.
Вы предлагаете убрать некие составляющие. Но это нереально. Вы видели код создания MDI окна? Он простейший, естественно, я и не думал, что причина в нем.
Значит, ошибка в другом месте кода, а кода много. Все не выложишь.
И почему я задал вопрос — для меня остается непонятным что за ошибка.

EOutOfResources with message "Дочерние окна не могут иметь меню"

даже тип ошибки EOutOfResources никак не клеится с расшифровкой "Дочерние окна не могут иметь меню".
Если не могут — так это не то, чтобы не хватает ресурсов, это должен быть другой тип ошибки.
И сама фраза "Дочерние окна не могут иметь меню" — ну ведь нету там никаких меню…

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

И тут еще одна неприятность произошла. Я нашел последовательность действий, которая всегда приводила к ошибке, слава богу хоть что-то постоянное. Но вот с недавних пор это уже не приводит к ошибкe. После перезагрузки что ли изменилось? Мистика, в общем…

Мне пока в голову пришло только одно, коли уж ошибка редко вылезает, то тупо эмулировать действие пользователя. Цикл что ли какой хитроумный написать, ну типа пользователь жмет на кнопку — выполняется процедура. А мне из цикла самому эти процедуры вызывать, как будто пользователь работает. И все это поставить работать непрерывно, должна же ошибка вылезать…
В общем, писать под программу комплекс тестирования. Но хлопотное это дело, если у кого есть какие соображения — я бы лучше их выслушал…


 
Piter ©
 
(2004-05-26 18:52)
[20]

Никто ничего не скажет?


 
nikkie ©
 
(2004-05-26 20:01)
[21]

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

медитация на приведенным кодом ничего не даст. наверное, надо верить Дельфи — проблема действительно в нехватке ресурсов. Особенно, если после разового возникновения этой ошибки, она возникает постоянно до перезапуска программы, скажем.

честно говоря, не знаю тула, которым можно было бы отследить используемые ресурсы. когда-то под 98-ми пользовался программкой Resource Meter — если программа небрежно обращалась с ресурсами, то это было заметно. если проблема с ресурсами и ты можешь запустить программу под 9x — ошибка станет очевиднее.

заметь, что ты даже не описал, с чем именно работает твоя программа. по оброненным тобой фразам понятно, что там есть работа с базой и сокетами. могу предположить, что в ней есть также WebBrowser. если с ним ты обращаешься где-то неаккуратно, то вполне возможна утечка из-за него.


 
Cobalt ©
 
(2004-05-26 20:14)
[22]

Пропробуй использовать MemProof — может у тебя где утечка
Используешь где низкоуровневые(WinAPI) функции?
Может, хуки есть какие (например, от сторонних программ)?


 
Piter ©
 
(2004-05-26 22:51)
[23]

nikkie (26.05.04 20:01) [21]
Особенно, если после разового возникновения этой ошибки, она возникает постоянно до перезапуска программы

да, так и есть,но думаю из-за того, что программа просто стала неправильно работать. При попытке продолжить работу она зависает, выкидывает AV и т.д.

nikkie (26.05.04 20:01) [21]
наверное, надо верить Дельфи — проблема действительно в нехватке ресурсов

ну Дельфи тут вообще не при чем. Я уже говорил несколько раз, что ошибка начинается с CreateIcon, она возвращает ноль. И после нее GetLastError возвращает такую строчку с ошибкой… так что можно доверять Windows, а я ей не доверяю :)
Насчет нехватки ресурсов — да не может быть, ошибка может проявиться в первую минуту работы. Один раз кликнуть по теме, откроется ВТОРОЕ окно и ошибка будет. А может долго работать с закрытием/открытием множества окон и без всяких ошибок…

nikkie (26.05.04 20:01) [21]
заметь, что ты даже не описал, с чем именно работает твоя программа

да собственно говоря это Magic Forum :)
Зря я, наверное, сказал, ибо теперь ты не будешь помогать :( получается, своими руками конкурентов плодишь…

nikkie (26.05.04 20:01) [21]
могу предположить, что в ней есть также WebBrowser. если с ним ты обращаешься где-то неаккуратно, то вполне возможна утечка из-за него

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

Cobalt (26.05.04 20:14) [22]
Используешь где низкоуровневые(WinAPI) функции?

сосбтвенноручно не использую.

Cobalt (26.05.04 20:14) [22]
Может, хуки есть какие (например, от сторонних программ)?

нету

Я вот чего совсем не понимаю, почему CreateIcon возвращает ноль? Ну вот уперлось мне это… думаю, если понять почему — дальше можно строить умозаключения.
Может кто привести пример, чтобы CreateIcon возвращала ноль? Это сколько же программа должна сожрать памяти, чтобы не удалось выполнить CreateIcon? Аналогичная ситуация с CreateWindow — не могу представить сколько надо создать окон, чтобы она вернула ноль. Даже в Win95 можно создать более 16000 окон… думаю, иконок можно создать не меньше…
все мне было бы понятно, если бы не «нехватка ресурсов». Ну черт побери — когда не хватает ресурсов, машина хоть бы тормозить стала что ли… ничего подобного…

Я вот блин не догадался проверить какие параметры передаются в функцию CreateIcon, может они неправильные, функция возвращает ноль, а GetLastError просто возвращает некорректную ошибку, просто глюк windows? Бывает же такое

P.S. Кстати, Nikkie, ты не правил EmbeddedNS в последнее время? А то может ты исправил глюк там какой…


 
Piter ©
 
(2004-05-26 22:52)
[24]

Вот, кстати, ответ на королевстве:

setlength(ArrForm, length(ArrForm)+1);
i:=High(ArrForm);
ArrForm[i]:=TMDIChild.Create(MainForm); // Ошибка

подобным образом создавал массив объектов,
глючило, пока не сделал в другом порядке

TempObject:=TObject.Create;
setlength(ObjectsArray,length(ObjectsArray)+1);
ObjectsArray[length(ObjectsArray)-1]:=TempObject;

По-моему, это уже шаманство какое-то, но я к нему готов…


 
Игорь Шевченко ©
 
(2004-05-26 23:08)
[25]


> Может кто привести пример, чтобы CreateIcon возвращала ноль?
>

SysErrorMessage(GetLastError) в студию.


 
nikkie ©
 
(2004-05-26 23:24)
[26]

>Piter
на все твои вопросы «почему» я ответить не могу. и не хочется гадательством заниматься. одна попытка — если не получиться угадать в чем твоя проблема, то тебе один путь — см. [14] DiamondShark

и вот попытка: у тебя в коде есть код типа WebBrowser.Document?

>да собственно говоря это Magic Forum :)
да я, собственно, догадываюсь. про WebBrowser я не просто так сказал. ты просто учитывай, что не все как я знают, какого рода программу ты пишешь и на какой операционной системе тестируешь. так что когда задаешь вопрос, то не лишним будет описать программу и ОС.

>ты не правил EmbeddedNS в последнее время?
первое и последнее (пока) изменение
(*  v1.01  03/04/2004 NA                                                      *)
(*        A problem with thread creation is fixed.                            *)
(*        The problem sometimes resulted in AV.                               *)

>Вот, кстати, ответ на королевстве:
и после этого говорят, что на королевстве уровень отвечающих выше :))
ну попробуй пошаманить, вдруг получится.


 
Piter ©
 
(2004-05-30 18:12)
[27]

up


 
RealRascal ©
 
(2004-05-30 22:16)
[28]


> Cobalt (24.05.04 23:17) [8]
> Ну, что могу посоветовать — удаляй из проекта разные компоненты
> пока не избавишься от ошибки
>
> ты так шутишь? И что удалять? Может, без форм обойтись?

А это действительно может быть дельной мыслью. У меня как-то было такое — написал основной код, начал занимаца приукрашательством, удобства всякие навешивать, батончики, мемошки…
И вот тут фигня какая-то (мистическая прямо таки:)) стала происходить:
Кладешь на форму чекбокс, компилишь, запускаешь на вычисления — AV.
Убираешь чекбокс, копмилишь, запускаешь на вычисления — все ок.
Никаких изменений в коде, событий на чекбокс никаких, просто — AV и все тут! Хоть ты тресни! Так я до истины не докопался, времени небыло, надо было курсач расчитывать, плюнул я на это и без чекбокса этого обошелся. А народ в этом форуме мне говорил, что это из-за использования указателей (или что-то там вроде этого). Еще говорили про Range Checking, но мне это не помогло…


 
kombat ©
 
(2004-05-31 01:21)
[29]

2 RealRascal ©
Это да, иногда такие непонятки возникают. Кинул на форму JvPopupMenu, никакого кода на нем нет. И при закрытии приложения с незакрытой формой с JvPopupMenu вылазит AV. Заменил на обычный PopupMenu — все пришло в норму.
Это конечно не мистика, все как-то объясняется, но …


 
Piter ©
 
(2004-05-31 18:30)
[30]

nikkie (25.05.04 00:34) [12]
>Как у формы можно конструктор перекрыть…
элементарно. также как и у любого другого класса

Nikkie, ты так и не привел примера!


 
kombat ©
 
(2004-05-31 18:35)
[31]

constructor Create(AOwner: TComponent); overload; override;
constructor Create(AOwner: TComponent; AParent: TWinControl);      reintroduce; overload;

===================================================

constructor TfrmBIT_BaseForm.Create(AOwner: TComponent);
begin
 FAsChild := False; { форма не внедренная, базовый конструктор }
 inherited Create(AOwner);
end; { end of Create }
//************************************************

constructor TfrmBIT_BaseForm.Create(AOwner: TComponent; AParent: TWinControl);
begin
 FAsChild := True; { форма внедренная, переопределенный конструктор }
 FTempParent := AParent;
 inherited Create(AOwner);
end; { end of Create }


 
Piter ©
 
(2004-05-31 18:48)
[32]

А TfrmBIT_BaseForm = class(TForm) ?


 
kombat ©
 
(2004-05-31 18:53)
[33]

TfrmBIT_BaseForm = class(TForm)
и такое есть, но чуть выше в файле )))
или под перекрытием конструктора что-то другое имелось ввиду?


 
Piter ©
 
(2004-05-31 18:59)
[34]

kombat (31.05.04 18:53) [33]

и чего, пример работает?


 
kombat ©
 
(2004-05-31 19:05)
[35]

конечно, эта идея взята из С.Тейксейра, К.Пачеко — Delphi 5 Руководство разработчика 1. Если вызываем переопределенный конструктор в передаем ему AParent = TPanel, то созданная форма становится внедренной в этот TPanel. Естестенно для этого нужно описать еще пару процедурок типа CreateParams, но основная идея с конструктором.
Это кстати кусок из работающего проекта.


 
Piter ©
 
(2004-05-31 19:10)
[36]

kombat (31.05.04 19:05) [35]
Если вызываем переопределенный конструктор в передаем ему AParent = TPanel, то созданная форма становится внедренной в этот TPanel. Естестенно для этого нужно описать еще пару процедурок типа CreateParams, но основная идея с конструктором

Просто Nikkie говорил, что:

>элементарно. также как и у любого другого класса

вот мне кажется, что не так, как у любого класса…


 
kombat ©
 
(2004-05-31 19:17)
[37]

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


 
nikkie ©
 
(2004-05-31 22:32)
[38]

детский сад, блин…

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
 TForm1 = class(TForm)
 private
   { Private declarations }
 public
   { Public declarations }
   constructor Create(AOwner: TComponent); override;
 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}

constructor TForm1.Create(AOwner: TComponent);
begin
 ShowMessage("aaa");
 inherited;
end;

end.


 
Gero ©
 
(2004-05-31 22:43)
[39]


> [38] nikkie ©   (31.05.04 22:32)
> детский сад, блин…

Точно.


 
kombat ©
 
(2004-05-31 23:14)
[40]

а в чем детский сад?


  • Ошибка exception access violation win 10
  • Ошибка exception 0х1333 generation failed
  • Ошибка exception 0xc0000005 access violation
  • Ошибка exception 0x1333 generation failed
  • Ошибка excel файл поврежден поэтому его нельзя открыть