2008-09-29 11 views

Répondre

14

Comme knight_killer a souligné ci-dessus, vous utilisez la fonction Assert(), affirmant que Assigned(obj) est true. Bien sûr, comme dans la plupart des langages compilés, les assertions sont exécutées (ou même incluses dans la sortie du compilateur) à moins que vous ne les ayez spécifiquement activées, donc vous ne devriez pas compter sur les assertions pour les versions en mode release.

Vous pouvez, bien sûr, simplement vérifier par rapport à nil, un Assert(obj <> nil). Cependant, Assigned() produit exactement la même sortie du compilateur et a l'avantage supplémentaire de fonctionner sur les pointeurs vers les méthodes de classe (qui sont en réalité une paire de pointeurs, un à la méthode, et l'autre à l'instance de classe). Assigned() est une bonne habitude à ramasser.

+2

En fait, dans Delphi, les assertions sont activées par défaut et doivent être spécifiquement désactivées. –

10

Vous ne savez pas ce que vous voulez dire, mais Assert(Assigned(MyObject)); est assez court et facile à utiliser.

3

si elle est assignée (MyObject) puis ...

7

Affecté (AObject) vous indiquera si un objet est nul ou non.

Peut-être vaut la peine de mentionner le fait que si vous libérez un objet en utilisant AObject.Free, l'assigné retournera toujours vrai. Donc, assurez-vous de libérer l'objet en utilisant FreeAndNil (AObject).