Как определить действителен ли указатель
Проблема такая:
Создаю я объект, допустим форму
Form2:=TForm2.Create(nil);
предполложим наша форма - диалог, который может быль закрыт пользователем, при этом происходит уничтожение методом Free
Procedure TForm2.Button1Click(Sender:Tobject);
begin
Free;
end;
Но, переменная Form2 все еще указывает на область памяти, где раньше лежал экземпляр TForm2.
И, естественно при вызове Form2.Free происходит иключение
Вопрос такой, как можно проверить, ссылается ли Form2 на существующий или уничтоженный объект
Заранее спасибо
Цитата:
Originally posted by defrag
Всем привет.
Проблема такая:
Создаю я объект, допустим форму
Form2:=TForm2.Create(nil);
предполложим наша форма - диалог, который может быль закрыт пользователем, при этом происходит уничтожение методом Free
Procedure TForm2.Button1Click(Sender:Tobject);
begin
Free;
end;
Но, переменная Form2 все еще указывает на область памяти, где раньше лежал экземпляр TForm2.
И, естественно при вызове Form2.Free происходит иключение
Вопрос такой, как можно проверить, ссылается ли Form2 на существующий или уничтоженный объект
Заранее спасибо
Всем привет.
Проблема такая:
Создаю я объект, допустим форму
Form2:=TForm2.Create(nil);
предполложим наша форма - диалог, который может быль закрыт пользователем, при этом происходит уничтожение методом Free
Procedure TForm2.Button1Click(Sender:Tobject);
begin
Free;
end;
Но, переменная Form2 все еще указывает на область памяти, где раньше лежал экземпляр TForm2.
И, естественно при вызове Form2.Free происходит иключение
Вопрос такой, как можно проверить, ссылается ли Form2 на существующий или уничтоженный объект
Заранее спасибо
Юзай билдер... там все как то попроще :) (сори за спам)
Цитата:
Originally posted by defrag
Всем привет.
Проблема такая:
Создаю я объект, допустим форму
Form2:=TForm2.Create(nil);
предполложим наша форма - диалог, который может быль закрыт пользователем, при этом происходит уничтожение методом Free
Procedure TForm2.Button1Click(Sender:Tobject);
begin
Free;
end;
Но, переменная Form2 все еще указывает на область памяти, где раньше лежал экземпляр TForm2.
И, естественно при вызове Form2.Free происходит иключение
Вопрос такой, как можно проверить, ссылается ли Form2 на существующий или уничтоженный объект
Заранее спасибо
Всем привет.
Проблема такая:
Создаю я объект, допустим форму
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).
Надеюсь помог :)
Нет, это не так. После Free указатель не обязан быть нилом. Используй FreeAndNil().
Попробуйте функцию Assigned.