Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как проверить создан ли TFileStream;


bbk ©   (2008-11-21 01:27:00) 

var
  tmpStream : TFileStream;
begin

  tmpStream := TFileStream.Create('d:\1.dat', fmCreate);
  tmpStream.free;

...
 if Assigned(tmpStream) then tmpStream.free; // Вылетает except ошибка
end;  

В чем и вопрос, как правильно проверить, так как после free метода файлового потока Assigned(tmpStream) возвращает все равно истину.


{RASkov}   (2008-11-21 13:04:00) [1]

> [11] Правильный$Вася   (21.11.08 13:01)

сорри... я не верно понял [9](


Правильный$Вася   (2008-11-21 13:01:00) [2]


> Но память-то нужно отдать

естественно


{RASkov}   (2008-11-21 12:48:00) [3]

> [9] Правильный$Вася   (21.11.08 12:26)

Но память-то нужно отдать :) Поэтому [7]...


Правильный$Вася   (2008-11-21 12:26:00) [4]


> а вообще если у меня есть процедурка нужно в конце всегда
> обнулять созданный объект или free будет достаточно?

по выходе из процедурки у тебя эти переменные уже недоступны


Anatoly Podgoretsky   (2008-11-21 08:56:00) [5]

> bbk  (21.11.2008 1:27:00)  [0]

Очень просто, ничего проверять не надо, не засоряй себе мозги.


Германн   (2008-11-21 02:01:00) [6]


> bbk   (21.11.08 01:37) [6]
>
> а вообще если у меня есть процедурка нужно в конце всегда
> обнулять созданный объект или free будет достаточно?
>

Как правило достаточно. Всё остальное "от лукаваго"! :)


bbk   (2008-11-21 01:37:00) [7]

а вообще если у меня есть процедурка нужно в конце всегда обнулять созданный объект или free будет достаточно?


{RASkov}   (2008-11-21 01:34:00) [8]

> хендл все равно остается.

"битый"


{RASkov}   (2008-11-21 01:33:00) [9]

> После Free пременную сбрось в нил...

:) или в любую близлежащую реку...) т.е.:
tmpStream.free;
tmpStream:=nil;
.....
if Assigned(tmpStream) then

See also: FreeAndNil()


bbk   (2008-11-21 01:33:00) [10]

{RASkov} спасибо, что-то не допер был.
интересно девки пляшут...


bbk   (2008-11-21 01:32:00) [11]

что ещё не понятно, после

   tmpStream.free;
   ShowMessage(IntToStr(tmpStream.Handle));

хендл все равно остается.
с destroy такая же хрень.
как блин его удалить? (:


{RASkov}   (2008-11-21 01:29:00) [12]

> [0] bbk   (21.11.08 01:27)

После Free пременную сбрось в нил...


Наверх

Титульная страница Поиск, карта сайта Написать письмо