![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вот такая ошибка начала вываливаться при переходе [D5, D7]
Ega23 © (2007-02-20 09:28:00)с Delphi5 на Delphi7: OnCreate главной формы по некоему условию
if not (biMaximize in BorderIcons) then BorderIcons := BorderIcons + [biMaximize];
На этой строчке вываливаетсяAV at address ... in module ntdll.dll/ Write of address ....
Вот что может вызвать обвал в ntdll такая, казалось бы, безобидная строка????
Ega23 (2007-02-20 13:20:00) [1]
> Rouse_ © (20.02.07 12:30) [9]
Спасибо, возьму на заметку. Сейчас просто руки не дойдут - надо танки резко добавлять... :)
Rouse_ (2007-02-20 12:30:00) [2]Вот так попробуй:
SetWindowLong(Handle, GWL_STYLE,
GetWindowLong(Handle, GWL_STYLE) or WS_MAXIMIZEBOX);
SendMessage(Handle, WM_NCPAINT, 0, 0);
Ega23 (2007-02-20 11:31:00) [3]
> А если без условий и в самое начало OnCreate, пока твой
> код не нанес форме ощутимых повреждений?
Всё то же самое... :(
> Форма действительно создается автоматом, без лишних телодвижений
> в dpr?
Сначала DataModule создаётся, там, кстати, и условие вычисляется. Потом - главная форма.
ЮЮ (2007-02-20 11:27:00) [4]А если без условий и в самое начало OnCreate, пока твой код не нанес форме ощутимых повреждений?
Форма действительно создается автоматом, без лишних телодвижений в dpr?
Ega23 (2007-02-20 11:18:00) [5]
> ради интереса попробуй наоборот - по условию изымать
>
Попробую, но сильной разницы не вижу - всё равно в SetBorderIcons попаду, а там - на RecreateWnd.... :)
Правильный Вася (2007-02-20 11:10:00) [6]ради интереса попробуй наоборот - по условию изымать
Ega23 (2007-02-20 10:53:00) [7]Так я-ж говорю, эта штука должна добавляться по условию. Которое вычисляется непосредственно перед созданием гл.формы.
Правильный Вася (2007-02-20 10:48:00) [8]
> там RecreateWnd вызывается, на нём и сыпется.
вот-вот
зачем тебе эта кнопка понадобилась в динамике?
зашей ее сразу в дизайнере
Ega23 (2007-02-20 10:39:00) [9]
> OFF: А зачем тебе тут условие? Это же SET...
> Include(BorderIcons, biMaximize);
Да это древний проект, я ещё тогда совсем тупо писал...
Я тут в дебри VCL залез, там RecreateWnd вызывается, на нём и сыпется.
Боюсь я сейчас даже и не скажу, что конкретно на загрузке происходит (там только у главной формы >15000 строк кода), а в проект не залезал уже года 3.
В общем, хотелось бы хотя бы приблизительную оценку об ошибке получить - чего там в ntdll может не нравится? Тогда хоть подробнее сказать смогу....
З.Ы. перед финальной сборкой галку Use Debug DCUs надо отключать?
Rouse_ (2007-02-20 10:12:00) [10]OFF: А зачем тебе тут условие? Это же SET...
Include(BorderIcons, biMaximize);
А вообще ничего криминального в коде нет :)
Попробуй на пустой проекте повторить.