2010-07-27 10 views
1

Y at-il un moyen de voir si une instable du flux de fichiers est utilisée? par exemple si je déclare FS de type TFileStream, écrivez tampon et à libérer enfin le flux en utilisant tfilestream.free puis-je vérifier quelque chose comme :comment détecter si tfilestream a été libéré?

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

actif et beingused méthodes n'existe pas pour vrai, nous ne pouvons pas non plus tester tfilestream.free = true juste en faisant cela pour donner une idée de ce que j'essaie de demander

+0

Il n'y a vraiment aucun moyen de détecter si un objet a été libéré ou non, étant donné que la mémoire peut obtenir réutilisé par d'autres objets. La meilleure façon de le faire est de ne pas réutiliser les références d'objet après leur libération, et quand vous en avez besoin, utilisez FreeAndNil, comme Robert l'a indiqué. –

Répondre

16

Vous ne pouvez pas le faire comme vous le souhaitez. Mais vous et le faire avec 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; 
Questions connexes