2010-07-27 75 views
1

有沒有辦法查看是否正在使用tfile流的實例? 例如,如果我聲明FS型TFileStream的中,寫入緩衝器,並 使用tfilestream.free我可以檢查東西 像終於釋放流:如何檢測tfilestream是否已被釋放?

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

活躍beingused方法不存在我們也可以測試tfilestream.free = true只是讓我知道我在想什麼

+0

真的沒有辦法,如果一個對象已被釋放或沒有,因爲存儲器可以通過其他對象得到重用,以檢測做到這一點。正確的做法是,在釋放對象引用後大多不重用對象引用,並且在需要時使用FreeAndNil,就像Robert指出的那樣。 – 2010-07-27 17:08:15

回答

16

你不能以你期望的方式去做。但是你和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;