← →
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
Подскажите алгоритм действия.
Ошибка при обращении к реестру.
- 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
- Активный участник
- Mixail 51
- Активный участник
- Возраст: 42
- Репутация: 102
- Сообщения: 2810
- Зарегистрирован: 21.03.2015
- С нами: 8 лет 3 месяца
- Профессия: инженер по ПБ
- Откуда: г. Мурманск
Непрочитанное сообщение #5 Mixail 51 » 21.07.2015, 23:52
АРМ случайно не в Program Files установлен, если да то переустанавливайте просто в отдельно созданную папку на системном диске.
Не ошибается только тот кто не работает.
- sibguardian
- sibguardian
- Возраст: 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
- sibguardian
- Возраст: 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 желательно в другую папку.
- Вложения
-
- 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
- Активный участник
- Mixail 51
- Активный участник
- Возраст: 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
- sibguardian
- Возраст: 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]
а в чем детский сад?