Модераторы: Snowy, MetalFan, bems, Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ошибка в cоздание своего класса, Создание своего класса 
:(
    Опции темы
pseud
Дата 31.5.2007, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 10
Всего: 40



Цитата(blaze @  10.2.2006,  07:09 Найти цитируемый пост)
Потом ссылаюсь на этот класс из другого модуля, наприме Unit1, где у меня на нажатие кнопки вызывается

v.data:=123; где v - глобальная переменная в этом модуле тип ее - TMyClass; 

После этого события выскакивает Access Violation; Cannot write at adress .....;

Нет Вы не поняли, ошибка возникает при попытке присвоения v.Data:=123
CANNOT WRITE AT ADRESS 


blaze,

Раз v - глобальная переменная, то в модуле Unit1, как я понимаю это форма TForm1, код должен быть такой:
Код

var
  Form1: TForm1;
  v: TMyClass;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  v := TMyClass.Create;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  v.data:=123;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  FreeAndNil(v);
end;



--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Yanis
Дата 31.5.2007, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 6
Всего: 111



Цитата(MetalFan @  31.5.2007,  10:19 Найти цитируемый пост)
мда.. а зачем тогда Class functions?

Тада компилятор не даст нам использовать внутренние переменные в этих методах smile

Добавлено через 6 минут и 38 секунд
Оказывается всё это прокатывает без AV, потому что методы статические. Компилятор их помнит без напоминания.

Спасибо Розычу.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Alexeis
Дата 31.5.2007, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 34
Всего: 459



Цитата(MetalFan @  31.5.2007,  08:53 Найти цитируемый пост)
Free - это не class procedure.... только что посмотрел)
но вызов Free без дополнительной проверки на nil возможен и не приводит к AV....

  А чего в этом такого? С точки зрения реализации метод это обычная процедура в которую первым параметром передается указатель на объект. Если к данным не обращаться, то с чего будут возникать AV? Проверил Self на nil и вперед, если он не nil то VMT существует и можно без проблем вызывать Destroy. Напрямую вызов Destroy, у несуществующего объекта приведет к AV так как Destroy - это виртуальный метод (иногда даже динамический), т.е. поиск его адреса будет осуществляться в VMT, ссылка на которую отсутствует в уничтоженном объекте.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Yanis
Дата 31.5.2007, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 6
Всего: 111



Цитата(Alexeis @  31.5.2007,  10:49 Найти цитируемый пост)
в уничтоженном объекте. 

в несуществующем smile

Добавлено через 18 секунд
или «не созданном».


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Rennigth
Дата 31.5.2007, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 15
Всего: 76





--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Alexeis
Дата 31.5.2007, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 34
Всего: 459



Там есть одна неточность 
Цитата(Snowy @  9.10.2006,  10:44 Найти цитируемый пост)
Вызываться функции могут без создания объекта. Любые.

  Уточню, любые статические (статические в делфиском смысле, т.е. не виртуальные и не динамические).

Это сообщение отредактировал(а) Alexeis - 31.5.2007, 10:24


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
MetalFan
Дата 31.5.2007, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 22
Всего: 128



отлично) разобралис) всем спасибо!


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Yanis
Дата 31.5.2007, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 6
Всего: 111



Цитата(Yanis @  31.5.2007,  10:08 Найти цитируемый пост)
По всей видимости ошибка начинает возникать после того как в методе начинается работа с переменными класса. Если таковых нет, то всё работает

 smile 


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0756 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.