Daftar fitur bahasa Delphi dan versi di mana mereka diperkenalkan / tidak digunakan lagi

114

Sebelum saya mulai, saya ingin menunjukkan bahwa saya telah dengan jujur ​​dan sungguh-sungguh mencari hal seperti itu berulang kali dan secara mendalam melalui Google, dan tidak dapat menemukannya.

Saya memerlukan (untuk proyek yang saya kembangkan) daftar semua Delphi (2007 hingga versi rilis terbaru, saya tidak lagi mendukung versi apa pun yang lebih lama dari 2007) "Fitur Bahasa", dan versi di mana mereka diperkenalkan dan ( jika ada) tidak digunakan lagi, diperbaiki atau dihapus.

Saya telah mencatat pertanyaan serupa dengan ini di Stack Overflow sebelumnya, meskipun sebagian besar diutarakan dalam bentuk "fitur mana yang terbaik", dan ditutup karena dianggap tidak sesuai.

Jika ada yang mengetahui daftar seperti itu (atau memiliki cukup waktu luang untuk menyusunnya), saya akan sangat berterima kasih.

Jawaban yang diterima akan berisi tautan ke daftar semacam itu, atau daftar itu sendiri.

LaKraven
sumber
T: Jadi mengapa Anda membutuhkan daftar seperti itu? T: Apakah Anda mencoba membuat satu set kode (mungkin komponen atau pustaka) yang mendukung semua platform antara BDS2007 dan XE2 (yaitu tidak menggunakan fitur yang lebih baru dari BDS2007)? T: Jika demikian, mengapa tidak mencoba mengompilasi pada tahun 2007 dan lihat jeda apa? (PS: Saya masih senang menggunakan BDS2006;)).
paulsm4
3
@ paulsm4 1) Jadi saya dapat menjelaskan batasan fitur di seluruh versi di perpustakaan umum, 2) Ya (tetapi bukan Perpustakaan Komponen harus), 3) Karena lebih mudah untuk mengetahui sebelumnya daripada terus-menerus menguji pada versi yang berbeda setiap aspek perpustakaan . Secara teoritis D2006 akan bekerja dengan baik, tapi saya tidak akan mendukungnya secara aktif (jangan tersinggung).
LaKraven

Jawaban:

159

Perhatikan bahwa jawaban ini hanya mencantumkan fitur bahasa baru,
bukan fitur VCL / FMX baru.

Berikut ini tautan ke docwiki RAD Studio:

Daftar lengkap dari Embarcadero: What's New
Lihat juga: daftar David I.


Untuk meringkas:

Delphi 10.3.x, 10.4 (belum keluar, ini spekulatif)

Delphi 10.3

  • Kompilator Linux 64-bit tidak lagi menggunakan ARC , melainkan menggunakan manual default yang dikelola, yang sama dengan yang ada di kompiler Windows. Ini membuat kode porting dari Windows atau OSX ke linux jauh lebih mudah.
  • Variabel sebaris dengan inferensi tipe otomatis
  • Dukungan AnsiChar / AnsiString 8 bit di aktifkan di Linux.
  • C ++ Builder dan Delphi sekarang menggunakan ABI yang sama untuk semua panggilan.

Delphi 10.2 Tokyo

Delphi 10.1 Berlin

Delphi 10 Seattle

  • Dukungan untuk Android 5.1.1 dan iOS 8.4
  • Penanganan pengecualian OSX yang ditingkatkan

Delphi XE8

  • Dukungan untuk iOS 64-bit;
  • Tipe integer baru: FixedInt , FixedUInt 32-bit tipe integer pada semua platform;
  • Jenis bilangan bulat baru yang bergantung pada platform: LongInt , LongWord (64-bit di iOS-64, 32-bit di semua platform lain);

Delphi XE7

Delphi XE6

Delphi XE5

Delphi XE4

Di XE4, ini berubah sehingga $ ENDIF menjadi terminator yang diterima untuk $ IF, $ IFDEF, $ IFNDEF, dan $ IFOPT.

Delphi XE3

Delphi XE2

Delphi XE

  • The {$STRINGCHECKS}compiler direktif diabaikan dalam XE;
  • Nilai baru 16-byte untuk {$ALIGN}direktif: Nilai yang dapat diterima untuk {$ALIGN}direktif sekarang termasuk 1, 2, 4, 8, dan 16.
  • {$CODEALIGN}direktif baru , ini menetapkan alamat awal untuk prosedur atau fungsi.
  • The {$STRONGLINKTYPES ON}direktif
  • Dukungan untuk ekspresi reguler.

Delphi 2010

  • Delphi RTTI yang Ditingkatkan (Informasi Jenis Waktu Proses).
  • Atribut
  • The asoperator dapat digunakan untuk melemparkan kembali referensi antarmuka ke objek dari yang diekstraksi.
  • The isoperator dapat digunakan untuk memverifikasi apakah referensi antarmuka diekstraksi dari kelas tertentu.
  • Pengecoran tidak aman normal dapat dilakukan pada interface: TObject(SomeInterface).
  • delayeddirektif baru menunjukkan bahwa perpustakaan eksternal seperti DLL tidak akan dimuat pada waktu deklarasi tetapi menunggu sampai panggilan pertama ke metode
  • Pembuat Kelas / Destruktor

Delphi 2009

Delphi 2007

  • Tidak ada perubahan bahasa yang saya tahu;
    Perhatikan bahwa Delphi 2007 adalah rilis non-breaking, DCU dari D2006 akan bekerja tanpa perubahan pada D2007 ;
  • ('Kepribadian' .NET tahun 2007 memperkenalkan obat generik )

Delphi 2006

Delphi 2005

  • for ... in loop,
  • inline kata kunci
  • Karakter pengganti dalam pernyataan penggunaan diizinkan
  • tipe bersarang
  • konstanta bersarang
  • {$REGION}/ {$ENDREGION}direktif

Delphi 7

  • tiga peringatan kompiler tambahan:
    • Unsafe_Type,
    • Unsafe_Code, dan
    • Unsafe_Cast. Peringatan ini dinonaktifkan secara default, tetapi dapat diaktifkan
  • direktif kompiler baru {$WARN UNSAFE_CODE ON}
  • Kelebihan rutinitas yang memformat dan mengurai angka, nilai tanggal-waktu, dan mata uang menggunakan TFormatSettingsstruktur.

Delphi 6

Delphi 5

Tidak ada fitur bahasa baru, tetapi:

Delphi 4

  • Array dinamis
  • LongWorddan Int64; Cardinaladalah UINT32 (sebelum itu unsigned nilai 31-bit)
  • Realmengambil 8 byte dan sama dengan double(sebelumnya 6 byte);
    • Ganti dengan {$REALCOMPATIBILITY ON}direktif kompilator baru ;
    • REAL48menggantikan 6-byte yang lama real;
  • Mendukung resourcestrings
  • Metode overloading
  • Parameter default
  • {$EXTERNALSYM}dan {$NODEFINE}arahan
  • implementskata kunci untuk properti

Delphi 3

  • Wordbool, longbool dan bytebool toko truesebagai -1bukan 1 (Boolean tidak berubah)
  • Komponen harus dipasang menggunakan packages.
  • Pernyataan.
  • out parameter.
  • Widestring
  • interfacedan dukungan dispinterfacekata kunci dan COM ( dispid).

Delphi 2

  • Dukungan untuk 32-bit;
  • Ansistringmenggantikan shortstringsebagai tipe string default
  • Currency
  • Variant (untuk interop dengan otomatisasi OLE).
  • Dukungan threading dan ThreadVarkata kunci.
  • Data 4 byte adalah 4 byte packedkata kunci selaras menimpa perilaku ini;
  • TDateTime dimulai di 1899/12/30 bawah D1 itu dimulai pada0000/00/00
  • finalizationkata kunci baru
  • registerdan stdcallkonvensi panggilan ditambahkan.
  • packed kata kunci.
Johan
sumber
Ah luar biasa! Saya tidak dapat menemukan cara agar Docwiki menunjukkan kepada saya halaman khusus untuk versi Delphi yang lebih lama (sebelum XE2) ... tidak tahu mengapa! Ini luar biasa, dan telah ditandai sebagai jawaban yang benar! Terima kasih!
LaKraven
@DavidHeffernan Sangat berguna untuk memiliki fitur baru pada tahun 2007 karena ini menetapkan dasar ... dalam arti, saya akan tahu dengan pasti apakah sebagian dari apa yang saya produksi mungkin dapat berfungsi di versi sebelumnya (bahkan jika saya sendiri memiliki tidak ada niat untuk mendukungnya)
LaKraven
9
Di blog saya, saya mempertahankan Daftar
RRUZ
3
Sialan DITUNDA, itu LUAR BIASA! Mengapa mereka tidak memberi Anda daftar ini saat Anda meningkatkan!
Peter Turner
1
Ini tidak akurat. $LIBPREFIXarahan dkk ada setidaknya sejak D7 (saya curiga D6, karena terkait Kylix)
Konsultasi Gratis
16

Hanya untuk melengkapi jawaban Johan, periksa entri ini di blog saya List of changes between versions of Delphi (Since Delphi 5)dan halaman luar biasa The TIndexyang mencantumkan sebagian besar fitur baru sejak delphi 2005 dan sumber daya tentang masing-masing.

RRUZ
sumber
Beberapa waktu yang lalu situs delphi lain delphi3000 ditandai sebagai berbahaya untuk beberapa antivirus.
RRUZ
2
Saya adalah pemilik The TIndex dan saya dapat mengonfirmasi bahwa ini adalah positif palsu.
LachlanG
7

File jedi.inc yang digunakan oleh proyek Dephi JEDI memperlihatkan serangkaian definisi fitur. Jika proyek Anda kompatibel dengan MPL, Anda bahkan dapat menggunakannya untuk deteksi fitur dan menyelamatkan diri Anda dari masalah menemukan kembali roda tersebut.

Misalnya, ini mendefinisikan SUPPORTS_FOR_INapakah kompiler mendukung enumerator. Seseorang bisa membungkus kode enumerator Anda dengan IFDEFmemeriksa definisinya daripada memeriksa versi kompiler tertentu.

lebih gila
sumber
Ya, termasuk ini tentu membantu, tetapi tidak memiliki kelengkapan daftar rinci (oleh karena itu pertanyaan ini). Terima kasih atas sarannya ... anggaplah jawaban yang diterima untuk pertanyaan ini merupakan peningkatan pada informasi yang diberikan oleh jedi.inc :)
LaKraven
1
@LaKraven: Benar, ada banyak hal yang tidak didapatnya, tetapi untuk beberapa hal itu mungkin cukup. Ini juga memiliki keuntungan karena sudah dilakukan. :-) Secara pribadi, menurut saya, meratakan hierarki VCL, menghapus header hak cipta, dan membuang semuanya ke dalam repositori kontrol versi mungkin berguna juga. Dengan begitu, Anda dapat melihat kapan fitur RTL / VCL tertentu diterapkan.
lebih dari
@LaKraven, saya percaya yang jedi.incpaling tidak akurat, sementara daftar Johan perlu beberapa verifikasi.
Konsultasi Gratis