Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.05.22;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
8-70410
Racer
2003-01-27 23:14
2003.05.22
Видимые/невидимые линии


14-70487
The Dyckrill
2003-05-04 02:37
2003.05.22
ХЕХ


14-70455
race1
2003-04-30 10:45
2003.05.22
теория


3-70115
vick_pvm
2003-04-28 16:49
2003.05.22
BDE почему-то держит директорию после закрытия таблицы.


1-70278
wwwasya
2003-05-12 17:35
2003.05.22
Application.CreateForm vs TForm.Create





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский