Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вот такая ошибка начала вываливаться при переходе [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);
А вообще ничего криминального в коде нет :)
Попробуй на пустой проекте повторить.


Наверх

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