Danh sách các tính năng và phiên bản ngôn ngữ Delphi được giới thiệu / không dùng nữa


114

Trước khi bắt đầu, tôi muốn chỉ ra rằng tôi đã trung thực và thực sự tìm kiếm nhiều lần và toàn bộ thông qua Google cho một thứ như vậy, và không thể tìm thấy một thứ.

Tôi yêu cầu (đối với dự án mà tôi đang phát triển) danh sách tất cả Delphi (từ 2007 đến phiên bản mới nhất được phát hành, tôi không còn hỗ trợ bất kỳ phiên bản nào cũ hơn 2007) "Tính năng ngôn ngữ", và các phiên bản mà chúng đã được giới thiệu và ( nếu có) không dùng nữa, cải tiến hoặc loại bỏ.

Tôi đã ghi nhận các câu hỏi tương tự như vậy trên Stack Overflow trước đây, mặc dù hầu hết các câu hỏi đó đều được diễn giải ở dạng "tính năng nào là tốt nhất" và bị đóng lại vì được coi là không phù hợp.

Nếu ai đó biết về một danh sách như vậy (hoặc có đủ thời gian rảnh rỗi để biên soạn một danh sách), tôi sẽ rất biết ơn.

Câu trả lời được chấp nhận sẽ chứa một liên kết đến danh sách như vậy hoặc chính danh sách đó.


Q: Vậy chính xác thì tại sao bạn lại cần một danh sách như vậy? Hỏi: Bạn đang cố gắng tạo một bộ mã (có thể là một thành phần hoặc thư viện) hỗ trợ tất cả các nền tảng giữa BDS2007 và XE2 (tức là không sử dụng tính năng nào mới hơn BDS2007)? Q: Nếu vậy, tại sao không thử biên dịch vào năm 2007 và xem những gì bị gián đoạn? (Tái bút: Tôi vẫn vui vẻ sử dụng BDS2006;)).
paulsm4

8
Simon kiểm tra câu hỏi này Danh sách các loại có gì mới trong Ngôn ngữ Delphi, RTL, VCL? , Cũng trên blog của tôi, tôi mantain một cập nhật Danh sách thay đổi giữa các phiên bản của Delphi
RRUZ

3
@ paulsm4 1) Vì vậy, tôi có thể giải thích các hạn chế về tính năng giữa các phiên bản trong thư viện công cộng, 2) Có (nhưng không nhất thiết phải có Thư viện thành phần), 3) Vì dễ dàng biết trước hơn là liên tục kiểm tra trên các phiên bản khác nhau ở mọi khía cạnh riêng lẻ của thư viện . Về mặt lý thuyết, D2006 sẽ hoạt động tốt, nhưng tôi sẽ không hỗ trợ nó tích cực (không vi phạm).
LaKraven

Câu trả lời:


159

Lưu ý rằng câu trả lời này chỉ liệt kê các tính năng ngôn ngữ mới
không phải các tính năng VCL / FMX mới.

Đây là các liên kết đến docwiki của RAD Studio:

Danh sách đầy đủ từ Embarcadero: Có gì mới
Xem thêm: Danh sách của David I


Tóm lại:

Delphi 10.3.x, 10.4 (chưa ra mắt, đây là suy đoán)

Delphi 10,3

Delphi 10.2 Tokyo

Delphi 10.1 Berlin

Delphi 10 Seattle

  • Hỗ trợ cho Android 5.1.1 và iOS 8.4
  • Cải thiện xử lý ngoại lệ OSX

Delphi XE8

  • Hỗ trợ cho iOS 64-bit;
  • Các kiểu số nguyên mới: Các kiểu số nguyên 32-bit FixedInt , FixedUInt trên tất cả các nền tảng;
  • Các kiểu số nguyên phụ thuộc nền tảng mới: LongInt , LongWord (64-bit trên iOS-64, 32-bit trên tất cả các nền tảng khác);

Delphi XE7

Delphi XE6

Delphi XE5

Delphi XE4

Tại XE4, điều này đã thay đổi để $ ENDIF trở thành một đầu cuối được chấp nhận cho $ IF, $ IFDEF, $ IFNDEF và $ IFOPT.

Delphi XE3

Delphi XE2

Delphi XE

  • Các {$STRINGCHECKS}chỉ thị biên dịch được bỏ qua trong XE;
  • Giá trị 16 byte mới cho {$ALIGN}chỉ thị: Các giá trị được chấp nhận cho {$ALIGN}chỉ thị hiện bao gồm 1, 2, 4, 8 và 16.
  • {$CODEALIGN}chỉ thị mới , điều này đặt địa chỉ bắt đầu cho một thủ tục hoặc hàm.
  • các {$STRONGLINKTYPES ON}chỉ thị
  • Hỗ trợ cho các biểu thức chính quy.

Delphi 2010

  • Nâng cao Delphi RTTI (Thông tin loại thời gian chạy).
  • Thuộc tính
  • Các asnhà điều hành có thể được sử dụng để đúc một tham chiếu trở lại giao diện cho đối tượng mà từ đó nó được chiết xuất.
  • Các isnhà điều hành có thể được sử dụng để xác minh xem một tài liệu tham khảo giao diện được chiết xuất từ một lớp nào đó.
  • Đúc không an toàn bình thường có thể được thực hiện trên một giao diện: TObject(SomeInterface).
  • delayedchỉ thị mới chỉ ra rằng một thư viện bên ngoài chẳng hạn như một DLL sẽ không được tải tại thời điểm khai báo mà phải đợi cho đến khi gọi phương thức đầu tiên
  • Bộ tạo / hủy cấu trúc lớp

Delphi 2009

Delphi 2007

  • Không có thay đổi ngôn ngữ nào mà tôi biết;
    Lưu ý rằng Delphi 2007 là một phiên bản không vi phạm, DCU từ D2006 sẽ hoạt động không thay đổi trong D2007 ;
  • (Tính cách .NET của năm 2007 được giới thiệu chung )

Delphi 2006

Delphi 2005

  • for ... in vòng lặp,
  • inline từ khóa
  • Cho phép ký tự đại diện trong câu lệnh sử dụng
  • các loại lồng nhau
  • hằng số lồng nhau
  • {$REGION}/ {$ENDREGION}chỉ thị

Delphi 7

  • ba cảnh báo trình biên dịch bổ sung:
    • Unsafe_Type,
    • Unsafe_Code và
    • Unsafe_Cast. Các cảnh báo này bị tắt theo mặc định, nhưng có thể được bật
  • chỉ thị trình biên dịch mới {$WARN UNSAFE_CODE ON}
  • Quá tải các quy trình định dạng và phân tích cú pháp số, giá trị ngày-giờ và đơn vị tiền tệ bằng cách sử dụng TFormatSettingscấu trúc.

Delphi 6

Delphi 5

Không có tính năng ngôn ngữ mới, nhưng:

Delphi 4

  • Mảng động
  • LongWordInt64; Cardinallà một UINT32 (trước khi nó là giá trị 31-bit không dấu)
  • Realchiếm 8 byte và giống như double(trước đây là 6 byte);
    • Ghi đè bằng {$REALCOMPATIBILITY ON}chỉ thị trình biên dịch mới ;
    • REAL48thay thế 6 byte cũ real;
  • Hỗ trợ cho resourcestrings
  • Quá tải phương thức
  • Tham số mặc định
  • {$EXTERNALSYM}{$NODEFINE}chỉ thị
  • implementstừ khóa cho thuộc tính

Delphi 3

  • Wordbool, longbool và bytebool cửa hàng truenhư -1thay vì 1 (Boolean là không thay đổi)
  • Các thành phần phải được cài đặt bằng cách sử dụng packages.
  • Sự khẳng định.
  • out thông số.
  • Widestring
  • interfacevà hỗ trợ dispinterfacetừ khóa và COM ( dispid).

Delphi 2

  • Hỗ trợ cho 32-bit;
  • Ansistringthay thế shortstringlàm kiểu chuỗi mặc định
  • Currency
  • Variant (để tương tác với tự động hóa OLE).
  • Hỗ trợ phân luồng và ThreadVartừ khóa.
  • Dữ liệu 4 byte là packedtừ khóa mới được căn chỉnh 4 byte ghi đè hành vi này;
  • TDateTime bắt đầu từ 1899/12/30 dưới D1, bắt đầu lúc0000/00/00
  • finalizationtừ khóa mới
  • registerstdcallquy ước gọi được thêm vào.
  • packed từ khóa.

Ah tuyệt vời! Tôi không thể tìm được cách để Docwiki hiển thị cho tôi các trang dành riêng cho các phiên bản cũ của Delphi (trước XE2) ... không biết tại sao! Điều này thật tuyệt vời và đã được đánh dấu là câu trả lời chính xác! Cảm ơn!
LaKraven

@DavidHeffernan Sẽ rất hữu ích nếu có các tính năng mới vào năm 2007 vì điều này đặt mức cơ sở ... theo một nghĩa nào đó, tôi sẽ biết chắc chắn liệu một phần của những gì tôi đang sản xuất có thể hoạt động trong các phiên bản trước đó hay không (ngay cả khi bản thân tôi có không có ý định hỗ trợ nó)
LaKraven

9
Trên blog của tôi, tôi mantain một cập nhật Danh sách thay đổi giữa các phiên bản của Delphi
RRUZ

3
Holy Crap HOAYED, điều đó thật TUYỆT VỜI! Tại sao họ không cung cấp cho bạn danh sách này khi bạn nâng cấp!
Peter Turner,

1
Điều này không chính xác. $LIBPREFIXet al chỉ là có ít nhất kể từ D7 (tôi nghi ngờ D6, kể từ khi họ được Kylix liên quan)
Miễn phí tư vấn

16

Chỉ để bổ sung cho câu trả lời của Johan, hãy kiểm tra mục này trên blog của tôi List of changes between versions of Delphi (Since Delphi 5)và trang tuyệt vời The TIndexliệt kê hầu hết các tính năng mới kể từ delphi 2005 và các tài nguyên về từng tính năng.


Cách đây một thời gian, một trang web delphi khác delphi3000 được đánh dấu là nguy hiểm đối với phần mềm chống vi-rút somes.
RRUZ

2
Tôi là chủ sở hữu của TIndex và tôi có thể xác nhận rằng đó là một dương tính giả.
LachlanG

7

Tệp jedi.inc được dự án Dephi JEDI sử dụng cho thấy một loạt các định nghĩa tính năng. Nếu dự án của bạn tương thích với MPL, bạn thậm chí có thể sử dụng nó để phát hiện tính năng và tránh rắc rối khi phát minh lại bánh xe cụ thể đó.

Ví dụ, nó xác định SUPPORTS_FOR_INxem trình biên dịch có hỗ trợ điều tra viên hay không. Người ta có thể bọc mã điều tra viên của bạn trong một IFDEFkiểm tra xác định đó thay vì kiểm tra một phiên bản trình biên dịch cụ thể.


Có, điều này chắc chắn hữu ích, nhưng nó thiếu tính đầy đủ của một danh sách chi tiết (do đó câu hỏi này). Cảm ơn đã gợi ý ... xem xét các câu trả lời được chấp nhận cho câu hỏi này là sự tăng cường trên những thông tin được cung cấp bởi jedi.inc :)
LaKraven

1
@LaKraven: Đúng, có rất nhiều thứ nó không đạt được, nhưng đối với một số người, nó có thể là đủ. Nó cũng có lợi thế là đã được thực hiện. :-) Cá nhân tôi nghĩ rằng việc làm phẳng các cấu trúc phân cấp VCL, loại bỏ các tiêu đề bản quyền và ném tất cả chúng vào một kho lưu trữ kiểm soát phiên bản cũng có thể hữu ích. Bằng cách đó, bạn có thể biết khi nào các tính năng RTL / VCL cụ thể được triển khai.
afrazier

@LaKraven, tôi tin những gì jedi.incít nhất là chính xác, trong khi danh sách của Johan cần một số xác minh.
Tư vấn miễn phí
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.