Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как определить действителен ли указатель

2.9K
12 сентября 2003 года
defrag
11 / / 05.09.2003
Всем привет.
Проблема такая:
Создаю я объект, допустим форму
Form2:=TForm2.Create(nil);

предполложим наша форма - диалог, который может быль закрыт пользователем, при этом происходит уничтожение методом Free

Procedure TForm2.Button1Click(Sender:Tobject);
begin
Free;
end;

Но, переменная Form2 все еще указывает на область памяти, где раньше лежал экземпляр TForm2.
И, естественно при вызове Form2.Free происходит иключение

Вопрос такой, как можно проверить, ссылается ли Form2 на существующий или уничтоженный объект

Заранее спасибо
2.4K
12 сентября 2003 года
Locky
11 / / 07.04.2003
Цитата:
Originally posted by defrag
Всем привет.
Проблема такая:
Создаю я объект, допустим форму
Form2:=TForm2.Create(nil);

предполложим наша форма - диалог, который может быль закрыт пользователем, при этом происходит уничтожение методом Free

Procedure TForm2.Button1Click(Sender:Tobject);
begin
Free;
end;

Но, переменная Form2 все еще указывает на область памяти, где раньше лежал экземпляр TForm2.
И, естественно при вызове Form2.Free происходит иключение

Вопрос такой, как можно проверить, ссылается ли Form2 на существующий или уничтоженный объект

Заранее спасибо



Юзай билдер... там все как то попроще :) (сори за спам)

315
12 сентября 2003 года
Nick_M
399 / / 29.05.2003
Цитата:
Originally posted by defrag
Всем привет.
Проблема такая:
Создаю я объект, допустим форму
Form2:=TForm2.Create(nil);

предполложим наша форма - диалог, который может быль закрыт пользователем, при этом происходит уничтожение методом Free

Procedure TForm2.Button1Click(Sender:Tobject);
begin
Free;
end;

Но, переменная Form2 все еще указывает на область памяти, где раньше лежал экземпляр TForm2.
И, естественно при вызове Form2.Free происходит иключение

Вопрос такой, как можно проверить, ссылается ли Form2 на существующий или уничтоженный объект

Заранее спасибо



Давненько я в Дельфях не программировал...
Думаю так: если указатель ссылаеться на пустое место, то он будет равен nil. Соответственно if Form2 = nil then ...
А вообще освобождать ссылку нужно так: Dispose(Form2).
Надеюсь помог :)

4.7K
15 сентября 2003 года
Dmitry9
17 / / 06.09.2003
Нет, это не так. После Free указатель не обязан быть нилом. Используй FreeAndNil().
448
15 сентября 2003 года
Mr. API
105 / / 20.06.2000
Попробуйте функцию Assigned.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог