![]() |
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]() ![]() ![]() |
|
blaze |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 10.2.2006 Репутация: нет Всего: нет |
подскажите, в чем ошибка? Создаю свой класс, например в модуле Unit2
Потом ссылаюсь на этот класс из другого модуля, наприме Unit1, где у меня на нажатие кнопки вызывается v.data:=123; где v - глобальная переменная в этом модуле тип ее - TMyClass; После этого события выскакивает Access Violation; Cannot write at adress .....; Нет Вы не поняли, ошибка возникает при попытке присвоения v.Data:=123 CANNOT WRITE AT ADRESS Это сообщение отредактировал(а) Girder - 16.2.2006, 10:45 |
|||
|
||||
CaNIBaLchik |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 8.2.2006 Где: Томск Репутация: нет Всего: нет |
забыл наверное
v:=TMyClass.Create; |
|||
|
||||
Bog d`An |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 217 Регистрация: 26.3.2005 Где: Украина:Днепропет ровск Репутация: нет Всего: 3 |
после работы тоже неплохо бы освободить память...
--------------------
Удача откроет двери даже там, где их нет.Генри Морган--------------------[Furry team][Agent`s team][СРУКер] |
|||
|
||||
Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 8 Всего: 51 |
||||
|
||||
Bog d`An |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 217 Регистрация: 26.3.2005 Где: Украина:Днепропет ровск Репутация: нет Всего: 3 |
шо в лоб, шо по лбу
--------------------
Удача откроет двери даже там, где их нет.Генри Морган--------------------[Furry team][Agent`s team][СРУКер] |
|||
|
||||
CaNIBaLchik |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 8.2.2006 Где: Томск Репутация: нет Всего: нет |
ага а также destroy
можно dispose тоже сработает ![]() |
|||
|
||||
Bog d`An |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 217 Регистрация: 26.3.2005 Где: Украина:Днепропет ровск Репутация: нет Всего: 3 |
в литературе рекомендуют использовать free
--------------------
Удача откроет двери даже там, где их нет.Генри Морган--------------------[Furry team][Agent`s team][СРУКер] |
|||
|
||||
CaNIBaLchik |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 8.2.2006 Где: Томск Репутация: нет Всего: нет |
только потому что перед destroy там идет проверка на nil
|
|||
|
||||
s-r |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 19.4.2007 Репутация: нет Всего: нет |
у меня аналогичная ситуация
В обработчике по клику:
код отрабатывает, но после закрытия формы вываливается исключение.. проблема решилась так
Может поскажите какая разница между cr.Create и cr:=TCirc.Create? и зачем это нужно делать, и почему если это не сделать возникает ошибка... прошу прощения если задаю глупые вопросы Это сообщение отредактировал(а) s-r - 31.5.2007, 08:23 |
||||||
|
|||||||
Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 6 Всего: 111 |
А такая, что кодом cr.Create ты пытаешься обратиться к свойству объекта который не существует. А кодом cr:=TCirc.Create ты выделяешь память под экземпляр класса TCirc и назначаешь указатель на эту память переменной cr (cr суть указатель). А зачем так делать, так это ты у борланда спроси. Они так придумали. Хотя мне такой принцип кажется логичным и прозрачным ![]() |
|||
|
||||
MetalFan |
|
||||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
можно написать так:
хм... как интересно получается... вроде как нельзя обращаться к объекту, который еще не создан. но ведь такой код является верным:
т.е. во Free произойдет проверка Self <> nil и выход. но ведь объект еще не создан/уже разрушен.... или TObject весь такой особенный, что позволяет это делать. или если нет обращения к внутренним полям класса, то вызов методов несозданного объекта все-таки возможен? ))) Это сообщение отредактировал(а) MetalFan - 31.5.2007, 08:39 -------------------- There are always someone smarter than you... |
||||
|
|||||
Yanis |
|
||||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 6 Всего: 111 |
Должна быть ошибка ![]() Да, он такой особенный ;) Не помню как точно называется. Классовые методы или что то подобное. Они объявляются так:
т.е. её можно вызывать без выделения памяти под экземпляр:
Вот так работает Create. Добавлено @ 08:47 Для тех, кто в танке:
Это сообщение отредактировал(а) Yanis - 31.5.2007, 08:49 |
||||||||||||
|
|||||||||||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
Free - это не class procedure.... только что посмотрел)
но вызов Free без дополнительной проверки на nil возможен и не приводит к AV.... Это сообщение отредактировал(а) MetalFan - 31.5.2007, 08:53 -------------------- There are always someone smarter than you... |
|||
|
||||
Yanis |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 6 Всего: 111 |
Ага. По всей видимости ошибка начинает возникать после того как в методе начинается работа с переменными класса. Если таковых нет, то всё работает ![]()
Это сообщение отредактировал(а) Yanis - 31.5.2007, 09:34 |
||||
|
|||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
мда.. а зачем тогда Class functions?... может отдельную тему сказать, вдруг мастера знают секрет этого фокуса? )))
-------------------- There are always someone smarter than you... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |