Перелік особливостей мови Delphi та версія, в якій вони були введені / застарілі


113

Перш ніж почати, я хотів би зазначити, що я чесно та справді шукав подібну річ неодноразово та всебічно, та не зміг її знайти.

Мені потрібен (для проекту, який я розробляю) список усіх Delphi (з 2007 року до останньої випущеної версії, я більше не підтримую жодної версії, старшої за 2007 рік) "Мовні функції", а також версії, в яких вони були введені та ( де застосовано) застаріле, покращене або видалене.

Я раніше відмічав подібні питання до Stack Overflow, хоча більшість із них були висловлені у формі "яка функція найкраща", і закриті як непридатні.

Якщо хтось знає про такий список (або має достатньо вільного часу для його складання), я був би дуже вдячний.

Прийнята відповідь буде або містити посилання на такий список, або сам список.


З: Тож навіщо саме вам потрібен такий список? Питання: Ви намагаєтесь створити один набір коду (можливо, компонент або бібліотеку), який підтримує всі платформи між BDS2007 та XE2 (тобто не використовує новіші функції, ніж BDS2007)? Питання: Якщо так, то чому б просто не спробувати скласти 2007 рік і подивитися, що відбувається? (PS: Я все ще із задоволенням використовую BDS2006;)).
paulsm4

8
Саймон перевірив це питання Асортимент списку того, що нового в мові Delphi, RTL, VCL? , Також у своєму блозі я підтримую оновлений Список змін між версіями Delphi
RRUZ

3
@ paulsm4 1) Тому я можу пояснити обмеження функцій у різних версіях публічних бібліотек, 2) Так (але обов'язково не бібліотеку компонентів), 3) тому що це простіше знати заздалегідь, ніж постійно перевіряти на різних версіях кожен окремий аспект бібліотеки . Теоретично D2006 спрацював би добре, але я не збираюся його активно підтримувати (без образи).
LaKraven

Відповіді:


158

Зауважте, що ця відповідь перераховує лише нові мовні функції, а
не нові функції VCL / FMX.

Ось посилання на docwiki RAD Studio:

Повний список від Embarcadero: Що нового
Дивіться також: Список Давида I


Узагальнити:

Delphi 10.3.x, 10.4 (ще не вийшов, це спекулятивно)

Delphi 10.3

  • 64-розрядний компілятор Linux більше не використовує ARC , він замість цього використовує керований посібником за замовчуванням, який такий же, як у компіляторі Windows. Це значно полегшує перенесення коду з Windows або OSX на Linux.
  • Вбудовані змінні з автоматичним висновком типу
  • 8-розрядна підтримка AnsiChar / AnsiString при включенні в Linux.
  • C ++ Builder і Delphi тепер використовують один і той же ABI для всіх дзвінків.

Delphi 10.2 Токіо

Delphi 10.1 Берлін

Delphi 10 Сіетл

  • Підтримка Android 5.1.1 та iOS 8.4
  • Покращена обробка винятків з OSX

Delphi XE8

  • Підтримка 64-розрядних iOS;
  • Нові цілі типи: FixedInt , 32-розрядні цілі цілі FixedUInt на всіх платформах;
  • Нові цілі типи, залежні від платформи: LongInt , LongWord (64-біт на iOS-64, 32-бітний на всіх інших платформах);

Delphi XE7

Delphi XE6

Delphi XE5

Delphi XE4

На XE4 це змінилося так, що $ ENDIF став прийнятим термінатором для $ IF, $ IFDEF, $ IFNDEF і $ IFOPT.

Delphi XE3

Delphi XE2

Delphi XE

  • {$STRINGCHECKS}Директива компілятора ігнорується в ХЕ;
  • Нове 16-байтне значення для {$ALIGN}директиви: прийнятні значення для {$ALIGN}директиви тепер включають 1, 2, 4, 8 та 16.
  • нова {$CODEALIGN}директива, це встановлює вихідну адресу для процедури або функції.
  • {$STRONGLINKTYPES ON}директива
  • Підтримка регулярних виразів.

Delphi 2010

  • Розширена Delphi RTTI (інформація про тип часу виконання).
  • Атрибути
  • asОператор може бути використаний , щоб кинути интерфейсную зворотне посилання на об'єкт , з якого він був витягнутий.
  • isОператор може бути використаний для перевірки , чи була посилання на інтерфейс , витягнуті з певного класу.
  • Нормальне небезпечним лиття може виконуватися на інтерфейсі: TObject(SomeInterface).
  • нова delayedдиректива вказує, що зовнішню бібліотеку, таку як DLL, не слід завантажувати під час декларування, а потрібно чекати, поки перший виклик методу
  • Конструктор класу / деструктор

Delphi 2009

Delphi 2007

  • Жодних мовних змін, про які я знаю;
    Зауважте, що Delphi 2007 - це неперервний випуск, DCU від D2006 працюватимуть без змін у D2007 ;
  • (.NET "особистість" 2007 року представила дженерики )

Delphi 2006

Delphi 2005

  • for ... in петлі,
  • inline ключове слово
  • Заява підстановки у використанні дозволена
  • вкладені типи
  • вкладені константи
  • {$REGION}/ {$ENDREGION}директиви

Delphi 7

  • три додаткових попередження компілятора:
    • Небезпечний_тип,
    • Unsafe_Code та
    • Небезпечний_Каст. Ці попередження вимкнено за замовчуванням, але їх можна ввімкнути
  • нова директива компілятора {$WARN UNSAFE_CODE ON}
  • Перевантаження підпрограм, які форматують і аналізують номери, значення дати та часу та валюту за допомогою TFormatSettingsструктури.

Delphi 6

Delphi 5

Немає нових мовних функцій, але:

Delphi 4

Delphi 3

  • Wordbool, longbool і bytebool зберігають trueяк -11 (булевий не змінюється)
  • Компоненти повинні бути встановлені за допомогою packages.
  • Твердження.
  • out параметри.
  • Widestring
  • interfaceі підтримка dispinterfaceключових слів і COM ( dispid).

Delphi 2

  • Підтримка 32-розрядних;
  • 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 Корисно мати особливості нового в 2007 році , так як це встановлює базовий рівень ... в певному сенсі, я буду знати з упевненістю, що частина того , що я міг би виробляти , можливо , працювати в більш ранніх версіях (навіть якщо я сам немає наміру його підтримувати)
LaKraven

9
У своєму блозі я зберігаю оновлений Перелік змін між версіями Delphi
RRUZ

3
Святе лайно ЗАСТАВЛЕНО, це ДУЖЕ! Чому вони не нададуть вам цей список під час оновлення!
Пітер Тернер

1
Це не точно. $LIBPREFIXта інші директиви існують принаймні з D7 (я підозрюю, що D6, оскільки вони пов'язані з Kylix)
Безкоштовні консультації

16

Тільки для доповнення відповіді Йохана ознайомтесь із цим записом у своєму блозі List of changes between versions of Delphi (Since Delphi 5)та на чудовій сторінці, The TIndexде перераховано більшість нових функцій, починаючи з delphi 2005, та ресурси про кожну з них.


Колись тому інший сайт delphi delphi3000 був позначений як небезпечний для антивірусу сомів.
RRUZ

2
Я є власником The TIndex і можу підтвердити, що це хибний позитив.
LachlanG

7

Файл jedi.inc, який використовується у проекті Dephi JEDI, демонструє низку визначених функцій. Якщо ваш проект сумісний з MPL, ви можете навіть використовувати його для виявлення функцій та заощадити собі проблему з винаходом саме цього колеса.

Наприклад, він визначає, SUPPORTS_FOR_INчи підтримує компілятор нумератори. Можна перетворити код перелічувача на IFDEFперевірку цього визначення, а не на перевірку конкретної версії компілятора.


Так, це включення, безумовно, корисно, але йому не вистачає повноти детального списку (звідси це питання). Дякую за пропозицію ... вважайте прийняту відповідь на це запитання вдосконаленням інформації, наданої jedi.inc :)
LaKraven

1
@LaKraven: Правда, багато чого не отримує, але для деяких це може бути достатньо. Це також має перевагу в тому, що вже зроблено. :-) Особисто я вважаю, що розшарування ієрархій VCL, зняття заголовків авторських прав та перекидання їх у сховище контролю версій теж може бути корисним. Таким чином ви можете бачити, коли були реалізовані конкретні функції RTL / VCL.
інфраструктура

@LaKraven, я вважаю, що jedi.incпринаймні точне, тоді як список Йохана потребує певних перевірок.
Безкоштовні консультації
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.