登陆

关于Delphi中的Assigned

Delphi代码
  1. function assigned(var P): Boolean;   
  2.   
  3. Description   
  4.   
  5. Use Assigned to determine whether the pointer or procedure referenced by P is nil. P must be a variable reference of a pointer or procedural type. Assigned(P) corresponds to the test P<> nil for a pointer variable, and @P <> nil for a procedural variable.   
  6.   
  7. Assigned returns False if P is nil, True otherwise.   
  8.   
  9. 检查指针指向的参考变量或过程是否为nil  
  10.   
  11. 每次我通常的处理方法都是:   
  12.   
  13.  if assigned(frm) then frm.close;   但是当下次调用时就会出错。为什么呢,直到咋天我才知道原因   
  14.   
  15. frm.close;frm.free;  只是指定这块内存可以重写,并未释放为NIL 因此当下次调用时即使frm.free已经   
  16.   
  17. 执行过assigned(frm)仍为TRUE;   
  18.   
  19. 正确的处理方法:   
  20.   
  21.  if assigned(frm) then    
  22. begin  
  23.    frm.close;   
  24.    frm:=nil;   
  25. end;   
  26.   
  27. 或:   
  28.   
  29. if assigned(frm) then    
  30. begin  
  31.   frm.close;   
  32.   freeandnil(frm);   
  33. end;   
  34.   
  35. freeandnil的说明:   
  36.   
  37. procedure FreeAndNil(var Obj);   
  38.   
  39. Description   
  40.   
  41. Use FreeAndNil to ensure that a variable is nil after you free the object it references. Pass any variable that represents an object as the Obj parameter.    

Tags: assigned

« 上一篇 | 下一篇 »