2008-09-29 19 views

Respuesta

14

Como knight_killer indicado anteriormente, se utiliza la función Assert(), afirmando que es Assigned(obj)true. Por supuesto, al igual que en la mayoría de los lenguajes compilados, las aserciones son no ejecutadas (o incluidas en el resultado del compilador) a menos que las haya habilitado específicamente, por lo que no debe confiar en las aserciones para compilaciones del modo de lanzamiento.

Puede, por supuesto, simplemente verificar contra nil, a la Assert(obj <> nil). Sin embargo, Assigned() produce exactamente la misma salida del compilador y tiene la ventaja adicional de que también funciona en los punteros a los métodos de clase (que en realidad son un par de punteros, uno para el método y el otro para la instancia de clase), por lo que Assigned() es un buen hábito para recoger.

+2

En realidad, en las afirmaciones de Delphi están activadas por defecto y tienen que estar específicamente deshabilitadas. –

10

No estoy seguro de lo que quiere decir, pero Assert(Assigned(MyObject)); es bastante corto y fácil de usar.

3

si Asignado (MiObjeto) entonces ...

7

Assigned (AObject) le dirá si un objeto es nulo o no.

Quizás vale la pena mencionar es el hecho de que si liberas un objeto utilizando AObject.Free, el Assigned seguirá siendo verdadero. Así que asegúrese de liberar el objeto usando FreeAndNil (AObject).

Cuestiones relacionadas