Tôi có một nghi ngờ cơ bản trong Delphi. Khi tôi giữ bất kỳ thành phần lúc thiết kế, nói ví dụ TADOConnectuion và trên nút nhấp chuột ngay cả tôi viết sau mã sau đó tôi không nhận được bất kỳ lỗi:Cơ bản của "Tự do" trong Delphi
begin
ADOConnection.Free; //No error
ADOConnection.Free; //No error
ADOConnection.Free; //No error
end;
Nhưng nếu tôi tạo ra cùng một đối tượng tại thời gian chạy như follwos tôi nhận được "truy cập vi phạm ..." lỗi
begin
ADOConnection := TADOConnection.create(self);
ADOConnection.Free; //No error
ADOConnection.Free; //Getting an "Access Violation..." error
end;
tôi nhận được lỗi tương tự mặc dù tôi tạo ra các đối tượng như sau:
ADOConnection := TADOConnection.create(nil);
Chỉ cần muốn biết lý do đằng sau hành vi như vậy, tức là Tại sao không có lỗi khi tôi giữ thành phần tại thời điểm thiết kế?
liên quan: [tại sao không FreeAndNil * thực sự * nil đối tượng của tôi?] (http://stackoverflow.com/questions/8036388/delphi-why-doesnt-freeandnil-really-nil-my-object) – CodesInChaos
Vishal, nó không hữu ích (trên thực tế nó không được khuyến khích) để thêm công thức lịch sự cho câu hỏi và câu trả lời của bạn ở đây trên SO. – mghie