Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.22;
Скачать: CL | DM;

Вниз

Мастера подскажите как определить где возникает ошибка!   Найти похожие ветки 

 
jen_bond ©   (2003-05-11 22:55) [0]

При закрытие приложения возникает ошибка Access Valiation по адресу ..... Каким образом можно отладить, и найти место где возикает эта ошибка!!!!


 
default ©   (2003-05-11 22:56) [1]

напиши код
и всё будет тип-топ


 
Vasiliy   (2003-05-11 23:09) [2]

Гдето выполняешь Object.Free когда Object = nil


 
evvcom ©   (2003-05-12 03:07) [3]


> Vasiliy (11.05.03 23:09)
> Гдето выполняешь Object.Free когда Object = nil

Вовсе нет. На такие ошибки обычно Delphi сама выкидывает в отладчик. В данном случае ошибка выскакивает во время финализации юнитов/проекта. Я недавно такую искал. Оказалось, забыл в деструкторе написать MyComponent.Free; (в конструкторе было MyComponent := TMyComponent.Create(nil);) Т.е. компонент создавался, но за автоматическое уничтожение его никто не отвечал. Аналогично с TObject.


 
Morfein ©   (2003-05-12 03:54) [4]

>>jen_bond
Обычно ошибка при закрытии программы выскакивает при неправильной работе с массивами... т.е. Вы где-то вышли за верхнюю границу массива в каком-то объекте(TMemo, TStringList, TList,...). Из-за резервирования памяти блоками, перезапись этой области отзывается ошибкой не сразу, а при уничтожении объекта.

>>Vasiliy
>>Гдето выполняешь Object.Free когда Object = nil
Это не запрещено. Метод Free производит проверку существования объекта.


 
Anatoly Podgoretsky ©   (2003-05-12 08:07) [5]

Метод Free не производит проверку существования объекта, только назначено что либо переменной или нет, точно такой же источник для ошибки.

Obj := TObj.Create;
Obj.Free;
Obj.Free; имеем ошибку, а по твоей логике не должно быть, так как Free проверил, что объекта нет.


 
Morfein ©   (2003-05-12 10:29) [6]

procedure Free;

Description

Use Free to destroy an object. Free automatically calls the destructor if the object reference is not nil. Any object instantiated at runtime that does not have an Owner should be destroyed by a call to Free, so that can be properly destroyed and the memory released. Unlike Destroy, Free is successful even if the object is nil, so if the object was never initialized, Free won’t result in an error.

© Delphi Help

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


 
Palladin ©   (2003-05-12 10:34) [7]


> Morfein © (12.05.03 10:29)

если создан и просто уничтожен то можно, но если он еще при уничтожении выставлен в Nil (например FreeAndNil(Obj)), то конечно же нельзя


 
han_malign ©   (2003-05-12 10:35) [8]

>Access Valiation по адресу .....
- вообще есть мизерный шанс локализовать строку где возникает ошибка по Map файлу, но в это место отладчик обычно и сам приходит...


 
Anatoly Podgoretsky ©   (2003-05-12 10:39) [9]

Morfein © (12.05.03 10:29)
Это у тебя интересно получается, если объект не создан, то точно также нельзя вызывать Free, тем более что в качестве доказательства ты сам же привел выписку из хелпа. Free безопасно вызвать если переменная имеет значение NIL, вне зависимости был создан объект или нет. И ничего другого.

Palladin © (12.05.03 10:34)
Ты чего то не то сказал :-)


 
Mikelson   (2003-05-12 10:50) [10]

Почему бы не скомпилировать проект с debug dcu и по шагам посмотреть весь процесс завершения работы приложения?


 
default ©   (2003-05-12 14:23) [11]

заглянули бы в исходник Free и вопросов бы не было...


 
Palladin ©   (2003-05-12 14:40) [12]

звиняйте...
реализация free меня все время с толку сбивает, отождествление с Destroy...



Страницы: 1 вся ветка

Текущий архив: 2003.05.22;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.022 c
1-70334
BDRON
2003-05-07 14:00
2003.05.22
CheckListBox.Selected


4-70573
dv81
2003-03-21 23:37
2003.05.22
Как отобразить стандартное окно поиска Windows ?


4-70558
МитяЙ2
2003-03-23 10:41
2003.05.22
Вывод приложения на передний план...


3-70188
Nikos
2003-05-03 13:47
2003.05.22
Как программно указать путь доступа к БД?


1-70228
Mazer
2003-05-11 18:01
2003.05.22
Одинаковые значания Captions десятка Labels???