2008-09-29 29 views

Trả lời

14

Giống như knight_killer chỉ ra ở trên, bạn sử dụng Assert() chức năng, khẳng định rằng Assigned(obj)true. Tất nhiên, giống như trong hầu hết các ngôn ngữ biên dịch, xác nhận là không được thực hiện (hoặc thậm chí được bao gồm trong đầu ra trình biên dịch) trừ khi bạn đã bật chúng cụ thể, vì vậy bạn không nên dựa vào các xác nhận cho chế độ phát hành.

Bạn có thể, tất nhiên, chỉ cần kiểm tra nil, a la Assert(obj <> nil). Tuy nhiên, Assigned() tạo ra kết quả trình biên dịch tương tự và có lợi ích bổ sung là nó cũng hoạt động trên con trỏ tới các phương thức lớp (thực tế là một cặp con trỏ, một phương thức, và phương thức kia cho cá thể lớp), vì vậy sử dụng Assigned() là một thói quen tốt để đón.

+2

Thực ra, trong xác nhận Delphi được bật theo mặc định và phải được tắt cụ thể. –

10

Không chắc chắn ý bạn là gì nhưng Assert(Assigned(MyObject)); khá ngắn và dễ sử dụng.

3

nếu Assigned (MyObject) sau đó ...

7

Đã gán (AObject) sẽ cho bạn biết nếu một đối tượng có phải là không.

Có lẽ đáng nói đến là một thực tế là nếu bạn giải phóng một đối tượng sử dụng AObject.Miễn tả sẽ được đưa trở lại đúng. Vì vậy, hãy chắc chắn rằng bạn giải phóng đối tượng bằng cách sử dụng FreeAndNil (AObject).

Các vấn đề liên quan