รายการคุณลักษณะภาษาเดลฟีและเวอร์ชันที่ใช้งาน / เลิกใช้งาน


114

ก่อนที่ฉันจะเริ่มฉันอยากจะชี้ให้เห็นว่าฉันได้ค้นหาสิ่งเหล่านี้ซ้ำแล้วซ้ำเล่าอย่างละเอียดถี่ถ้วนและละเอียดถี่ถ้วนผ่านทาง Google และไม่พบ

ฉันต้องการ (สำหรับโปรเจ็กต์ที่ฉันกำลังพัฒนา) รายการของเดลฟีทั้งหมด (2007 ถึงเวอร์ชันล่าสุดที่เปิดตัวฉันไม่รองรับเวอร์ชันที่เก่ากว่าปี 2007 อีกต่อไป) "คุณลักษณะทางภาษา" และเวอร์ชันที่มีการเปิดตัวและ ( ถ้ามี) เลิกใช้ปรับปรุงหรือลบออก

ฉันเคยสังเกตคำถามที่คล้ายกันนี้ใน Stack Overflow ก่อนหน้านี้แม้ว่าคำถามส่วนใหญ่จะใช้วลีในรูปแบบ "คุณลักษณะใดที่ดีที่สุด" และปิดเนื่องจากถือว่าไม่เหมาะสม

หากใครทราบรายชื่อดังกล่าว (หรือมีเวลาว่างพอที่จะรวบรวมได้) ฉันจะขอบคุณมาก

คำตอบที่ยอมรับจะมีลิงก์ไปยังรายการดังกล่าวหรือรายการนั้นเอง


ถาม: ทำไมคุณถึงต้องการรายชื่อดังกล่าว? ถาม: คุณกำลังพยายามสร้างชุดโค้ดหนึ่งชุด (อาจจะเป็นคอมโพเนนต์หรือไลบรารี) ที่รองรับทุกแพลตฟอร์มระหว่าง BDS2007 และ XE2 (กล่าวคือไม่มีฟีเจอร์ใหม่กว่า BDS2007) ถาม: ถ้าเป็นเช่นนั้นทำไมไม่ลองรวบรวมในปี 2550 แล้วดูว่ามีอะไรแตกบ้าง (PS: ฉันยังคงใช้ BDS2006 อย่างมีความสุข;))
paulsm4

8
Simon ตรวจสอบคำถามนี้รายการสารพันว่ามีอะไรใหม่ใน Delphi Language, RTL, VCL? นอกจากนี้ในบล็อกของฉันฉันยังมีรายการ
RRUZ

3
@ paulsm4 1) ดังนั้นฉันจึงสามารถอธิบายข้อ จำกัด ของฟีเจอร์ข้ามเวอร์ชันต่างๆในไลบรารีสาธารณะได้ 2) ใช่ (แต่ไม่จำเป็นต้องเป็นไลบรารีคอมโพเนนต์) 3) เนื่องจากง่ายต่อการทราบล่วงหน้ามากกว่าการทดสอบเวอร์ชันต่างๆอย่างต่อเนื่องในทุกแง่มุมของไลบรารี . ตามทฤษฎีแล้ว D2006 จะทำงานได้ดี แต่ฉันจะไม่สนับสนุนอย่างจริงจัง (ไม่มีความผิด)
LaKraven

คำตอบ:


159

โปรดทราบว่าคำตอบนี้แสดงเฉพาะคุณสมบัติภาษาใหม่เท่านั้น
ไม่ใช่คุณสมบัติVCL / FMX ใหม่

ลิงค์ไปยัง RAD Studio docwiki:

รายการทั้งหมดจาก Embarcadero: มีอะไรใหม่
ดูเพิ่มเติม: รายการของ David I


สรุป:

Delphi 10.3.x, 10.4 (ยังไม่หมดนี่เป็นการเก็งกำไร)

เดลฟี 10.3

  • คอมไพเลอร์ Linux 64 บิตไม่ใช้ ARC อีกต่อไปแต่จะใช้การจัดการด้วยตนเองเริ่มต้นแทนซึ่งเหมือนกับในคอมไพเลอร์ Windows ทำให้การย้ายรหัสจาก Windows หรือ OSX ไปยัง linux ง่ายขึ้นมาก
  • ตัวแปรอินไลน์พร้อมการอนุมานประเภทอัตโนมัติ
  • รองรับ AnsiChar / AnsiString แบบ 8 บิตในการเปิดใช้งานบน Linux
  • ตอนนี้ C ++ Builder และ Delphi ใช้ ABI เดียวกันสำหรับการโทรทั้งหมด

เดลฟี 10.2 โตเกียว

เดลฟี 10.1 เบอร์ลิน

เดลฟี 10 ซีแอตเทิล

  • รองรับ Android 5.1.1 และ iOS 8.4
  • ปรับปรุงการจัดการข้อยกเว้น OSX

เดลฟี XE8

  • รองรับ iOS 64 บิต
  • ประเภทจำนวนเต็มใหม่: FixedInt , FixedUIntประเภทจำนวนเต็ม 32 บิตบนทุกแพลตฟอร์ม
  • ประเภทจำนวนเต็มขึ้นอยู่กับแพลตฟอร์มใหม่: LongInt , LongWord (64 บิตบน iOS-64, 32 บิตบนแพลตฟอร์มอื่น ๆ ทั้งหมด);

เดลฟี XE7

เดลฟี XE6

เดลฟี XE5

เดลฟี XE4

ที่ XE4 สิ่งนี้เปลี่ยนไปเพื่อให้ $ ENDIF กลายเป็นเทอร์มิเนเตอร์ที่ได้รับการยอมรับสำหรับ $ IF, $ IFDEF, $ IFNDEF และ $ IFOPT

เดลฟี XE3

เดลฟี XE2

เดลฟี XE

  • {$STRINGCHECKS}สั่งคอมไพเลอร์จะถูกละเว้นใน XE;
  • ค่า 16 ไบต์ใหม่สำหรับ{$ALIGN}คำสั่ง: ค่าที่ยอมรับได้สำหรับ{$ALIGN}คำสั่งในขณะนี้ ได้แก่ 1, 2, 4, 8 และ 16
  • {$CODEALIGN}คำสั่งใหม่ตั้งค่าที่อยู่เริ่มต้นสำหรับขั้นตอนหรือฟังก์ชัน
  • {$STRONGLINKTYPES ON}สั่ง
  • รองรับนิพจน์ทั่วไป

เดลฟี 2010

  • ปรับปรุง Delphi RTTI (ข้อมูลประเภทเวลาทำงาน)
  • คุณลักษณะ
  • ตัวasดำเนินการสามารถใช้เพื่อส่งการอ้างอิงอินเทอร์เฟซกลับไปยังวัตถุที่ถูกดึงออกมา
  • isผู้ประกอบการสามารถใช้ในการตรวจสอบว่าการอ้างอิงอินเตอร์เฟซที่เป็นสารสกัดจากชั้นหนึ่ง
  • TObject(SomeInterface)ปกติหล่อที่ไม่ปลอดภัยสามารถดำเนินการในอินเตอร์เฟซ:
  • delayedคำสั่งใหม่ระบุว่าไม่ต้องโหลดไลบรารีภายนอกเช่น DLL ในเวลาประกาศ แต่ต้องรอจนกว่าจะมีการเรียกใช้เมธอดครั้งแรก
  • คลาส Constructor / Destructor

เดลฟี 2552

เดลฟี 2550

  • ไม่มีการเปลี่ยนแปลงภาษาที่ฉันรู้
    โปรดทราบว่า Delphi 2007 เป็นรุ่นที่ไม่ทำลาย DCU จาก D2006 จะทำงานไม่เปลี่ยนแปลงใน D2007 ;
  • (.NET 'บุคลิกภาพ' ของปี 2550 นำเสนอชื่อสามัญ )

เดลฟี 2549

เดลฟี 2548

  • for ... in ลูป
  • inline คำสำคัญ
  • อนุญาตให้ใช้คำสั่งสัญลักษณ์แทนในการใช้งาน
  • ประเภทที่ซ้อนกัน
  • ค่าคงที่ซ้อนกัน
  • {$REGION}/ {$ENDREGION}directives

เดลฟี 7

  • คำเตือนคอมไพเลอร์เพิ่มเติมสามคำเตือน:
    • Unsafe_Type,
    • Unsafe_Code และ
    • Unsafe_Cast คำเตือนเหล่านี้ถูกปิดใช้งานโดยค่าเริ่มต้น แต่สามารถเปิดใช้งานได้
  • คำสั่งคอมไพเลอร์ใหม่ {$WARN UNSAFE_CODE ON}
  • กิจวัตรที่จัดรูปแบบและแยกวิเคราะห์ตัวเลขค่าวันที่เวลาและสกุลเงินTFormatSettingsมากเกินไปโดยใช้โครงสร้าง

เดลฟี 6

เดลฟี 5

ไม่มีคุณสมบัติภาษาใหม่ แต่:

เดลฟี 4

เดลฟี 3

  • Wordbool, longbool และร้านค้า bytebool trueเป็น-1แทน 1 (บูลีนจะไม่เปลี่ยนแปลง)
  • ต้องติดตั้งส่วนประกอบโดยใช้ไฟล์ packagesไฟล์.
  • ยืนยัน
  • out พารามิเตอร์
  • Widestring
  • interfaceและdispinterfaceคำหลักและdispidการสนับสนุนCOM ( )

เดลฟี 2

  • รองรับ 32-bit;
  • Ansistringแทนที่shortstringเป็นประเภทสตริงเริ่มต้น
  • Currency
  • Variant (สำหรับการทำงานร่วมกับ OLE อัตโนมัติ)
  • การสนับสนุนเธรดและ ThreadVarคำหลัก
  • ข้อมูล 4 ไบต์คือ 4 ไบต์ที่จัดตำแหน่งใหม่ packedคำหลักจะแทนที่พฤติกรรมนี้
  • TDateTime เริ่มต้นที่1899/12/30 ต่ำกว่า D1 เริ่มต้นที่0000/00/00
  • finalizationคำหลัก ใหม่
  • registerและstdcallเพิ่มการประชุมทางโทรศัพท์
  • packed คำสำคัญ.

อาวิเศษมาก! ฉันไม่พบวิธีที่จะทำให้ Docwiki แสดงหน้าเฉพาะสำหรับ Delphi เวอร์ชันเก่า (ก่อน XE2) ... ไม่รู้ว่าทำไม! นี่เป็นเรื่องที่ยอดเยี่ยมและได้รับการทำเครื่องหมายว่าเป็นคำตอบที่ถูกต้อง! ขอบคุณ!
LaKraven

@DavidHeffernan การมีคุณสมบัติใหม่ในปี 2550 จะมีประโยชน์เนื่องจากสิ่งนี้กำหนดพื้นฐาน ... ในแง่หนึ่งฉันจะรู้ด้วยความมั่นใจว่าส่วนหนึ่งของสิ่งที่ฉันผลิตอาจใช้งานได้ในเวอร์ชันก่อนหน้าหรือไม่ (แม้ว่าตัวฉันเองจะมี ไม่มีเจตนาสนับสนุน)
LaKraven


3
Holy Crap ล่าช้านั่นยอดเยี่ยมมาก! ทำไมพวกเขาไม่ให้รายชื่อนี้เมื่อคุณอัปเกรด!
Peter Turner

1
สิ่งนี้ไม่ถูกต้อง $LIBPREFIXคำสั่งและคณะมีอย่างน้อยตั้งแต่ D7 (ฉันสงสัยว่า D6 เนื่องจากเกี่ยวข้องกับ Kylix)
ให้คำปรึกษาฟรี

16

เพียงเพื่อเติมเต็มคำตอบของJohanโปรดตรวจสอบรายการนี้ในบล็อกของฉันList of changes between versions of Delphi (Since Delphi 5)และหน้าที่ยอดเยี่ยมThe TIndexซึ่งแสดงรายการคุณลักษณะใหม่ส่วนใหญ่ตั้งแต่ delphi 2005 และแหล่งข้อมูลเกี่ยวกับแต่ละคุณลักษณะ


เมื่อไม่นานมานี้เว็บไซต์เดลฟีอื่นdelphi3000ถูกทำเครื่องหมายว่าเป็นอันตรายสำหรับโปรแกรมป้องกันไวรัส Somes
RRUZ

2
ฉันเป็นเจ้าของ The TIndex และฉันสามารถยืนยันได้ว่ามันเป็นผลบวกลวง
LachlanG

7

jedi.incไฟล์ที่ใช้โดยโครงการ Dephi JEDI exposes ชุดของการกำหนดคุณลักษณะ หากโปรเจ็กต์ของคุณเข้ากันได้กับ MPL คุณยังสามารถใช้เพื่อตรวจหาคุณสมบัติและช่วยตัวเองไม่ให้ยุ่งยากในการสร้างวงล้อนั้นขึ้นมาใหม่

ตัวอย่างเช่นกำหนดSUPPORTS_FOR_INว่าคอมไพเลอร์สนับสนุนตัวนับหรือไม่ เราสามารถรวมรหัสตัวนับของคุณในการIFDEFตรวจสอบการกำหนดนั้นแทนที่จะตรวจสอบเวอร์ชันคอมไพเลอร์เฉพาะ


ใช่สิ่งนี้มีประโยชน์อย่างแน่นอน แต่ขาดความสมบูรณ์ของรายการโดยละเอียด (ดังนั้นคำถามนี้) ขอบคุณสำหรับข้อเสนอแนะ ... พิจารณาคำตอบที่ได้รับการยอมรับสำหรับคำถามนี้เพื่อเป็นการปรับปรุงข้อมูลที่จัดทำโดย jedi.inc :)
LaKraven

1
@LaKraven: จริงอยู่มีหลายสิ่งที่ไม่ได้รับ แต่สำหรับบางคนอาจจะเพียงพอ นอกจากนี้ยังมีข้อดีของการทำแล้ว :-) โดยส่วนตัวแล้วฉันคิดว่าการแบนลำดับชั้น VCL การลอกส่วนหัวลิขสิทธิ์และการโยนทั้งหมดลงในที่เก็บการควบคุมเวอร์ชันอาจมีประโยชน์เช่นกัน ด้วยวิธีนี้คุณจะเห็นเมื่อมีการใช้งานคุณลักษณะ RTL / VCL
afrazier

@LaKraven ฉันเชื่อว่าสิ่งjedi.incที่ถูกต้องอย่างน้อยที่สุดในขณะที่รายการของ Johan ต้องการการยืนยันบางอย่าง
ให้คำปรึกษาฟรี
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.