Bạn có hồ sơ, đối tượng và lớp học.
Các bản ghi có sẵn từ turbo pascal 1.Chúng có trọng lượng nhẹ, có khả năng có các thuộc tính và phương thức, nhưng chúng không hỗ trợ kế thừa, Có một số vấn đề với các hàm trả về các bản ghi. Nếu những hồ sơ này có các phương pháp, điều này đôi khi gây ra lỗi nội bộ:
type
TRec = record
function Method1: Integer;
end;
function Func: TRec;
procedure Test;
var
x : TRec;
begin
Func.Method1; // Sometimes crashes the compiler
// Circumvention:
x := Func;
x.Method1; // Works
end;
Đối tượng được giới thiệu với turbo pascal 5 nếu tôi đúng. Sau đó, họ cung cấp một cách cho OO với pascal. Họ được nhiều hơn hoặc ít hơn không được chấp thuận với sự ra đời của Delphi, nhưng bạn vẫn có thể sử dụng chúng. Các đối tượng có thể thực hiện các giao diện.
Các lớp học được giới thiệu với Delphi 1 và linh hoạt nhất. Họ thực hiện các giao diện và hỗ trợ kế thừa. Nhưng mỗi biến lớp là một con trỏ ẩn. Điều này có nghĩa là các lớp cần được tạo trên heap. May mắn quá trình này chủ yếu là ẩn.
Dưới đây là bảng có sự khác biệt giữa ba. Tôi đã thêm giao diện để hoàn thành.
|Class|Object|Record|Interface|
------------------|-----------------------------|
Are pointers? | y | n | n | y |
Inheritance | y | y | n | y |
Helpers | y | n | y | n |
Impl. Interface | y | y | n | - |
Visibility | y | y | n | n |
Method | y | y | y | y |
Fields | y | y | y | n |
Properties | y | y | y | y |
Consts | y | y | y | n |
Types | y | y | y | n |
Variants | n | n | y | n |
Virtual | y | n | y | - |
------------------|-----------------------------|
Nguồn
2009-05-09 17:45:13
Bạn có thể xem [trình bao bọc mảng động của chúng tôi] (http://blog.synopse.info/post/2011/03/12/TDynArray-and-Record-compare/load/save-using -fast-RTTI), thêm các phương thức giống như TList cho bất kỳ mảng động nào. Nó cũng có thể tuần tự hóa nội dung mảng/bản ghi. Tôi cũng phát hiện ra một lỗi ngẫu nhiên trong Delphi 2010 (ít nhất), về các đối tượng: đôi khi, [đối tượng được tính tham chiếu không được khởi tạo] (http://blog.synopse.info/post/2011/01/29/record-and -object-issue-in-Delphi-2010)! Trong trường hợp này, bạn phải sử dụng các bản ghi cho các cấu trúc như vậy. –