Zanim zacznę, chciałbym zaznaczyć, że wielokrotnie i dogłębnie szukałem czegoś takiego w Google w sposób uczciwy i autentyczny i nie mogłem go znaleźć.
Potrzebuję (dla projektu, który tworzę) listy wszystkich Delphi (od 2007 do najnowszej wydanej wersji, nie obsługuję już żadnej wersji starszej niż 2007) "Funkcje językowe" oraz wersje, w których zostały wprowadzone i ( w stosownych przypadkach) wycofane, ulepszone lub usunięte.
Już wcześniej zauważyłem podobne pytania do tego w Stack Overflow, chociaż większość z nich została sformułowana w formie „która funkcja jest najlepsza” i została zamknięta jako niewłaściwa.
Byłbym bardzo wdzięczny, gdyby ktoś wiedział o takiej liście (lub miał dość czasu na jej sporządzenie).
Zaakceptowana odpowiedź będzie zawierała link do takiej listy lub samą listę.
źródło
Odpowiedzi:
Zauważ, że ta odpowiedź wymienia tylko nowe funkcje językowe, a
nie nowe funkcje VCL / FMX.
Oto linki do docwiki RAD Studio:
Pełna lista z Embarcadero: What's New
Zobacz także: lista Davida I.
Podsumowując:
Delphi 10.3.x, 10.4 (jeszcze nie dostępne, to spekulacje)
Delphi 10.3
Delphi 10.2 Tokio
@
operatora jest dozwolone tylko w przypadku twardego rzutowania tablicy.Delphi 10.1 Berlin
[weak]
,[unsafe]
i[volatile]
atrybuty są obsługiwane na wszystkich kompilatorów.Delphi 10 Seattle
Delphi XE8
Delphi XE7
Nowe wewnętrzne procedury kompilatora (nieudokumentowane):
function IsManagedType(T: TypeIdentifier): Boolean; function HasWeakRef(T: TypeIdentifier): Boolean; function GetTypeKind(T: TypeIdentifier): TTypeKind; function IsConstValue(Value): boolean;
Delphi XE6
Delphi XE5
potrzebuje urządzenia z ArmV6 + Neon lub ArmV7 do wdrożenia
wprowadza warunkowe zdefiniowanie ANDROID
Delphi XE4
Następujące nowe warunki warunkowe zostały wprowadzone / włączone w XE4:
AUTOREFCOUNT
CPUARM
EXTERNAL_LINKER
IOS
NEXTGEN
UNDERSCOREIMPORTNAME
WEAKREF
WEAKINSTREF
WEAKINTREF
dependency
dyrektywa do określania zależności biblioteki zewnętrznej (nieudokumentowana do XE8).Zwróć uwagę, że wiele prac przygotowawczych dla ARC było już w XE3, ale większość z nich została wyłączona
$IF
sprawozdanie może być rozwiązana tylko z$IFEND
, a$IFDEF
,$IFNDEF
,$IFOPT
dyrektyw mogą być rozwiązane tylko$ENDIF
.W XE4 zmieniło się to tak, że $ ENDIF stał się akceptowanym terminatorem dla $ IF, $ IFDEF, $ IFNDEF i $ IFOPT.
Delphi XE3
AtomicExchange()
,AtomicIncrement()
,AtomicCmpExchange()
,AtomicDecrement()
Delphi XE2
Packed
Teraz wymusza wyrównanie rekordów w bajtach (przed XE2 niekoniecznie to robiło)Dodano osiem nowych DEFINE:
ALIGN_STACK
CPUX86
CPUX64
MACOS (system operacyjny Mac)
MACOS32
PC_MAPPED_EXCEPTIONS
PIC
WIN64
uses
klauzuli wymagane są teraz pełne nazwy zakresów jednostek .{$ExcessPrecision on/off}
dyrektywa kompilatora (tylko x64)Delphi XE
{$STRINGCHECKS}
Dyrektywa kompilator jest ignorowany w XE;{$ALIGN}
dyrektywy: Dopuszczalne wartości dla{$ALIGN}
dyrektywy obejmują teraz 1, 2, 4, 8 i 16.{$CODEALIGN}
, ustawia adres początkowy procedury lub funkcji.{$STRONGLINKTYPES ON}
dyrektywaDelphi 2010
as
Operatora może być stosowany do oddania interfejsu jest odniesieniem do obiektu, z którego został ekstrahowany.is
Operatora może być wykorzystane do zweryfikowania, czy Interface ekstrahowano z danej klasy.TObject(SomeInterface)
.delayed
dyrektywa wskazuje, że biblioteka zewnętrzna, taka jak DLL, nie ma być ładowana w momencie deklaracji, ale ma czekać do pierwszego wywołania metodyDelphi 2009
string
teraz mapowany naUnicodeString
;{$HighCharUnicode on|off}
dyrektywa kompilatorafunction Default(T): T
funkcja wewnętrzna (nieudokumentowane){$PointerMath on|off}
;W1057 Implicit string cast from '%s' to '%s'
,W1058 Implicit string cast with potential data loss from '%s' to '%s'
,W1059 Explicit string cast from '%s' to '%s'
,W1060 Explicit string cast with potential data loss from '%s' to '%s'
;Exit
Funkcja może przyjmować parametr określający wynik;resourcestrings
jako Widestring;TObject
ma dodatkowy ukryty wskaźnikTMonitor
oprócz wskaźnika VMT;deprecated
kluczowe mogą mieć teraz dodatkowy tekstDelphi 2007
Zwróć uwagę, że Delphi 2007 to wydanie nieprzerwane, DCU z D2006 będą działać bez zmian w D2007 ;
Delphi 2006
static
metody i właściwości;strict
prywatne / chronione słowo kluczowe widoczności ;final
słowo kluczowe dla metod wirtualnych;{$METHODINFO}
dyrektywa;Delphi 2005
for ... in
pętle,inline
słowo kluczowe{$REGION}
/{$ENDREGION}
dyrektywyDelphi 7
{$WARN UNSAFE_CODE ON}
TFormatSettings
struktury.Delphi 6
[TCustomVariantType][68]
zapewnia przeciążanie operatorów dla niestandardowych typów wariantów{$IFDEF MSWINDOWS}
{$IFDEF LINUX}
{$LIBPREFIX}
{$LIBSUFFIX}
{$LIBVERSION}
{$MESSAGE 'message'}
{$SetPEFlags}
{$IF}{$ELSE}
dyrektyw kompilatoraexperimental
,deprecated
,library
,platform
(ale bez dodatkowego tekstu za przestarzałe)OLEVariant
{$J+}
)varargs
funkcji zewnętrznych (ale tylko dlacdecl
konwencji wywoływania)Delphi 5
Brak nowych funkcji językowych, ale:
Delphi 4
LongWord
iInt64
;Cardinal
jest UINT32 (przed 31-bitową wartością bez znaku)Real
zajmuje 8 bajtów i jest taki sam jakdouble
(poprzednio było to 6 bajtów);{$REALCOMPATIBILITY ON}
dyrektywą kompilatora;REAL48
zastępuje stare 6-bajtowereal
;resourcestrings
{$EXTERNALSYM}
i{$NODEFINE}
dyrektywimplements
słowo kluczowe dotyczące właściwościDelphi 3
true
jako-1
zamiast 1 (wartość logiczna pozostaje niezmieniona)packages
.out
parametry.Widestring
interface
oraz obsługadispinterface
słów kluczowych i COM (dispid
).Delphi 2
Ansistring
zastępujeshortstring
jako domyślny typ ciąguCurrency
Variant
(do współpracy z automatyzacją OLE).ThreadVar
słowo kluczowe.packed
słowo kluczowe new, nadpisuje to zachowanie;1899/12/30
pod D1 i zaczyna się o0000/00/00
finalization
słowo kluczoweregister
istdcall
dodano konwencje wywoływania.packed
słowo kluczowe.źródło
$LIBPREFIX
et al dyrektywy istnieją przynajmniej od D7 (podejrzewam D6, ponieważ są związane z Kylixem)Aby uzupełnić odpowiedź Johana, sprawdź ten wpis na moim blogu
List of changes between versions of Delphi (Since Delphi 5)
i doskonałą stronę, naThe TIndex
której znajduje się lista większości nowych funkcji od Delphi 2005 oraz zasoby o każdej z nich.źródło
Plik jedi.inc używany w projekcie Dephi JEDI przedstawia szereg definicji funkcji. Jeśli Twój projekt jest zgodny z MPL, możesz nawet użyć go do wykrywania funkcji i zaoszczędzić sobie kłopotów związanych z wymyślaniem na nowo tego konkretnego koła.
Na przykład określa,
SUPPORTS_FOR_IN
czy kompilator obsługuje moduły wyliczające. Można zawinąć kod modułu wyliczającego wIFDEF
sprawdzanie, czy nie ma definicji, zamiast sprawdzać określoną wersję kompilatora.źródło
jedi.inc
najmniej dokładne, podczas gdy lista Johana wymaga weryfikacji.