Как определить, был ли освобожден tfilestream? - PullRequest
1 голос
/ 27 июля 2010

есть ли способ узнать, используется ли поток tfile?например, если я объявляю FS типа tfilestream, записываю в него буфер и, наконец, освобождаю поток с помощью tfilestream.free. Могу ли я проверить что-то вроде:

if 
tfilestream.NotActive
then
 //code
if tfilestream.beingused then
 //code
if tfilestream.free = true then
    //code

active и used методов не существует на самом деле, и мы не можем проверить tfilestream.free = true , просто придумав это, чтобы дать представление о том, что я пытаюсь спросить

1 Ответ

16 голосов
/ 27 июля 2010

Вы не можете сделать это так, как вы ожидаете. Но вы и делаете это с FreeAndNil()

var
  FS : TFileStream;
begin
  FS := TFileStream.Create(...);
  try
   // Do Work with TFileSTream 
  finally 
   FreeAndNil(FS);
  end;

  // For some reason you need to check FS is freed.

  if not Assigned(FS) then
  begin
   // Stream was freed.
  end;
end;
...