Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 05.02.2010, 22:30
novashdima novashdima вне форума
Новичок
 
Регистрация: 05.02.2010
Адрес: Украина, Киев
Сообщения: 64
Версия Delphi: XE3, XE4
Репутация: 10
Восклицание Очень странное AV!

Итак,при запуске программы вылезает AV по адресу 00000000
если нажать break,то открывается CPU на модуле ntdll
ntdll.kernel32.RaiseException + 0x52
раньше вылезали AV с нормальными адресами,но там я ссылался на несозданные еще объекты,я переписал FormCreate на всех формах,но появилось вот это странное AV.После этого я запустил программу в режиме трассировки,первые две формы создались отлично,но 3 не захотела - компилятор выдал ошибку в project.dpr подчеркнув создание этой формы.если потом нажать продолжить то открывается CPU в котором идут адреса начиная от 00000000 и так очень много и все они имеют команды ?????.
Никаких экстраординарных команд не использую,проверил все причины возникновения AV и ничего не нашел.Я даже создал на главной форме,которая запускается первой TApplicationEvent и в нем при ошибках E:=nil; НО и это не помогает,ПОМОГИТЕ ПОЖАЛУЙСТА,СКОРО НАДО ПРОГРАММУ ПРЕДСТАВЛЯТЬ,А ОНА ДАЖЕ НЕ ЗАПУСКАЕТСЯ!!!
Извините,если переборщил с выделением...
Ответить с цитированием
  #2  
Старый 05.02.2010, 22:32
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,004
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Было такое при многоцветной иконке (TrueColor), но там программа все-таки дальше шла...

Какая винда, какая дельфя?
Ответить с цитированием
  #3  
Старый 05.02.2010, 22:34
novashdima novashdima вне форума
Новичок
 
Регистрация: 05.02.2010
Адрес: Украина, Киев
Сообщения: 64
Версия Delphi: XE3, XE4
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Было такое при многоцветной иконке (TrueColor), но там программа все-таки дальше шла...

Какая винда, какая дельфя?
Widows XP SP 3,CodeGear Rad Studio 2009
Ответить с цитированием
  #4  
Старый 05.02.2010, 23:22
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

Цитата:
но 3 не захотела - компилятор выдал ошибку в project.dpr подчеркнув создание этой формы.если потом нажать продолжить то открывается
Ставите прерывание на создании формы 3 - жмете F8 - на чем вывалилось - точку останова туда и F7.

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

Надо постепенно заходить глубже пошагово ( F7, F8 )
Ответить с цитированием
  #5  
Старый 05.02.2010, 23:31
novashdima novashdima вне форума
Новичок
 
Регистрация: 05.02.2010
Адрес: Украина, Киев
Сообщения: 64
Версия Delphi: XE3, XE4
Репутация: 10
По умолчанию

Цитата:
Сообщение от s0Creator
Ставите прерывание на создании формы 3 - жмете F8 - на чем вывалилось - точку останова туда и F7.

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

Надо постепенно заходить глубже пошагово ( F7, F8 )
если бы все было так просто,дело в том,что когда я запускаю с F5,то ошибка все равно выскакивает,а в project.dpr выдает ошибку,только если запускать прогу через F7,если запускать через F9,то там ошибку он не показывает,а просто выдает ошибку
Ответить с цитированием
  #6  
Старый 06.02.2010, 00:35
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,004
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Извини, а что ты там в FormCreate понаписал?
Ответить с цитированием
  #7  
Старый 06.02.2010, 01:05
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

Цитата:
Сообщение от novashdima
если бы все было так просто,дело в том,что когда я запускаю с F5,то ошибка все равно выскакивает,а в project.dpr выдает ошибку,только если запускать прогу через F7,если запускать через F9,то там ошибку он не показывает,а просто выдает ошибку
А кто сказал просто?
F5 - это поставить прерывание на строку в редакторе кода. Если по F9 ( запуск в отладчике ) ошибка вышла раньше точки прерывания, надо поставить прерывание раньше или жать F8 (выполнить пошагово не заходя в процедуры ). Каждый раз выделяется строка которая будет исполнена на следующем шаге. Если на следующем шаге ошибка - ставим в этой строчке прерывание ( или после перезапуска опять жмем F8 до этой строчки ), затем вместо F8 жмем F7 ( пошагово с заходом в процедуры ) и попадаем уже во вложенную процедуру ( возможно не в создание не 3 формы а второй ). Там все повторяем с F8 - находим строчку в этой процедуре ( методе ) и так пока не дойдем до конкретной строчки. Обычно максимум 30 мин и дальше углубляться некуда - остается только посмотреть значения задействованных переменных ( полей ).
Второй вариант - выложить код - посмотрим где и что.
Ответить с цитированием
  #8  
Старый 06.02.2010, 09:34
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

Еще как вариант - можно попробовать выставить галочку "Use debug .dcus" пересобрать ( Build ) и запустить в отладчике. Если после AV остановится в стандартном модуле Delphi - пройтись по стеку.

Кстати какое значение OldCreateOrder у форм?
Ответить с цитированием
  #9  
Старый 06.02.2010, 16:22
novashdima novashdima вне форума
Новичок
 
Регистрация: 05.02.2010
Адрес: Украина, Киев
Сообщения: 64
Версия Delphi: XE3, XE4
Репутация: 10
По умолчанию

Цитата:
Сообщение от s0Creator
А кто сказал просто?
F5 - это поставить прерывание на строку в редакторе кода. Если по F9 ( запуск в отладчике ) ошибка вышла раньше точки прерывания, надо поставить прерывание раньше или жать F8 (выполнить пошагово не заходя в процедуры ). Каждый раз выделяется строка которая будет исполнена на следующем шаге. Если на следующем шаге ошибка - ставим в этой строчке прерывание ( или после перезапуска опять жмем F8 до этой строчки ), затем вместо F8 жмем F7 ( пошагово с заходом в процедуры ) и попадаем уже во вложенную процедуру ( возможно не в создание не 3 формы а второй ). Там все повторяем с F8 - находим строчку в этой процедуре ( методе ) и так пока не дойдем до конкретной строчки. Обычно максимум 30 мин и дальше углубляться некуда - остается только посмотреть значения задействованных переменных ( полей ).
Второй вариант - выложить код - посмотрим где и что.
Спасибо конечно за совет,но я это все уже пробовал,так бы я за советом не обращался,я спрашивал на разных форумах и у разных людей,но никто не знает в чем причина.
Причем я же написал,что я запустил прогу в режиме трассировки,первые две формы создались отлично,без ошибок,а вот на создании третей в project.dpr на строке создания ошибка AV,если нажать F7 то открывается CPU с адресами от 00000000 и все имеют значение ?????
Я понимаю,что вы мне помогаете и я за это благодарен,но вы уж прям меня вообще в нубы записали,вы бы мне еще рассказали,как делфи запускать.
Извините,конечно,но если я спрашиваю не в разделе новичков,значит тут действительно что-то странное,если мой учитель по информацинным технологиям,имеющий научное звание в этой области и все его друзья и мои друзья и друзья друзей не знают в чем дело.
Ответить с цитированием
  #10  
Старый 06.02.2010, 16:26
novashdima novashdima вне форума
Новичок
 
Регистрация: 05.02.2010
Адрес: Украина, Киев
Сообщения: 64
Версия Delphi: XE3, XE4
Репутация: 10
По умолчанию

Цитата:
Сообщение от s0Creator
Еще как вариант - можно попробовать выставить галочку "Use debug .dcus" пересобрать ( Build ) и запустить в отладчике. Если после AV остановится в стандартном модуле Delphi - пройтись по стеку.

Кстати какое значение OldCreateOrder у форм?
На двух true на двух false,на главной false
Ответить с цитированием
  #11  
Старый 06.02.2010, 17:07
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

Цитата:
Сообщение от novashdima
На двух true на двух false,на главной false
Извини, если переборщил с советами ( тут не только в разделе для начинающих можно встретить ).

А на этой форме что затык OldCreateOrder True ?
( если да попробуй поменять ).

Эту форму можно выдрать из проекта ? ( или тогда создается нормально ? ).

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

Еще несколько вопросов ( предположений ) - может что поможет.

форма создается стандартно? ( Application.CreateForm(TForm1, Form1); )

Есть ли на ней сторонние компоненты, или попробовать по одному их убирать ( удаляя модули из uses ).
Особенно сравни с первыми двумя формами, что в трейтьей есть чего нет в них.
Вот так, например, можно получить AV по нулевому адресу:
Код:
procedure TsomeForm_wnd.FormCreate(Sender: TObject);
var
  nfe: TNotifyEvent;
begin
  nfe := nil;
  nfe(self);
end;
Правда у меня потом продолжилось ( после AV ) выполнение. ( Delphi 2010 ).

Хотя если даже не доходит в FormCreate(Sender: TObject);
что происходит при создании формы или компонентов или загрузки ресурсов.
Не пререопределял
Код:
constructor Create(AOwner: TComponent); override;
или
procedure Loaded; override;
или еще что нибудь?

Не пробовал трассировку после : "Use debug .dcus" и пересобрать ( Build ). Хоть в стандартные модули (
Код:
procedure TApplication.CreateForm(InstanceClass: TComponentClass; var Reference);
) должно же зайти и вывалиться где то дальше.

Пока больше не знаю что еще.
Ответить с цитированием
  #12  
Старый 06.02.2010, 17:18
novashdima novashdima вне форума
Новичок
 
Регистрация: 05.02.2010
Адрес: Украина, Киев
Сообщения: 64
Версия Delphi: XE3, XE4
Репутация: 10
По умолчанию

Цитата:
Сообщение от s0Creator
Извини, если переборщил с советами ( тут не только в разделе для начинающих можно встретить ).

А на этой форме что затык OldCreateOrder True ?
( если да попробуй поменять ).

Эту форму можно выдрать из проекта ? ( или тогда создается нормально ? ).

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

Еще несколько вопросов ( предположений ) - может что поможет.

форма создается стандартно? ( Application.CreateForm(TForm1, Form1); )
Есть ли на ней сторонние компоненты, или попробовать по одному их убирать ( удаляя модули из uses ).
Особенно сравни с первыми двумя формами, что в трейтьей есть чего нет в них.
Вот так, например, можно получить AV по нулевому адресу:
Код:
procedure TsomeForm_wnd.FormCreate(Sender: TObject);
var
  nfe: TNotifyEvent;
begin
  nfe := nil;
  nfe(self);
end;
Правда у меня потом продолжилось ( после AV ) выполнение. ( Delphi 2010 ).

Хотя если даже не доходит в FormCreate(Sender: TObject);
что происходит при создании формы или компонентов или загрузки ресурсов.
Не пререопределял
Код:
constructor Create(AOwner: TComponent); override;
или
procedure Loaded; override;
или еще что нибудь?

Не пробовал трассировку после : "Use debug .dcus" и пересобрать ( Build ). Хоть в стандартные модули (
Код:
procedure TApplication.CreateForm(InstanceClass: TComponentClass; var Reference);
) должно же зайти и вывалиться где то дальше.

Пока больше не знаю что еще.
OldCreateOrder = false
выдрать нельзя
создавался в project.dpr,но терь создается в FormCreate главной формы,если значение в ини файле ровно false,однако она вообще не хочет терь создаваться
насчет модулей:я оптимизирую прогу по полной,без ущерба удобности
поэтому все неиспользуемые модули удаляю,раньше все запускалось,никаких компонентов не добавлял(на эту форму)(да там итак всего 5 имеджов и ничего больше на форме нет)
Ответить с цитированием
  #13  
Старый 06.02.2010, 17:29
novashdima novashdima вне форума
Новичок
 
Регистрация: 05.02.2010
Адрес: Украина, Киев
Сообщения: 64
Версия Delphi: XE3, XE4
Репутация: 10
По умолчанию

такая проблема:я убираю из project.dpr создание формы глюченной,и добавляю в FormCreate главной,запускаю - все идет отлично,никаких ошибок,только я сохраняю все изменения,запускаю проект,то вылетает ошибка ExternelException
Ответить с цитированием
  #14  
Старый 06.02.2010, 18:04
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

Попробуй удалить эти имеджи ( я так понимаю они с картинками ) - может испорчен dfm файл? или картинка какая-то вызывает глюк.

Еще, я пробовал тоже на 2009 кодить - может у меня попалась такая но глюки замучили - перешел на 2010, вроде пока более-менее.

И еще, какой номер ExternelException ?
Ответить с цитированием
  #15  
Старый 06.02.2010, 18:42
novashdima novashdima вне форума
Новичок
 
Регистрация: 05.02.2010
Адрес: Украина, Киев
Сообщения: 64
Версия Delphi: XE3, XE4
Репутация: 10
По умолчанию

Цитата:
Сообщение от s0Creator
Попробуй удалить эти имеджи ( я так понимаю они с картинками ) - может испорчен dfm файл? или картинка какая-то вызывает глюк.

Еще, я пробовал тоже на 2009 кодить - может у меня попалась такая но глюки замучили - перешел на 2010, вроде пока более-менее.

И еще, какой номер ExternelException ?
C000001D
с имеджами все нормально,картиники тоже пояти с самого начала и месяц не вызывали никаких ошибок
меня мурыжит в 2009 то,что он подчеркивает как ошибку все функции Application(ExeName,ProcessMessages,CreaeteForm... )
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:21.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter