Bevor ich anfange, möchte ich darauf hinweisen, dass ich ehrlich und ehrlich wiederholt und ausführlich über Google nach so etwas gesucht habe und keine gefunden habe.
Ich benötige (für ein Projekt, das ich entwickle) eine Liste aller Delphi (2007 bis zur neuesten veröffentlichten Version, ich unterstütze keine Version älter als 2007) "Sprachfunktionen" und der Versionen, in denen sie eingeführt wurden, und ( gegebenenfalls) veraltet, verbessert oder entfernt.
Ich habe bereits ähnliche Fragen zu Stack Overflow gestellt, obwohl die meisten in der Form "Welche Funktion ist die beste" formuliert und als ungeeignet geschlossen geschlossen wurden.
Wenn jemand von einer solchen Liste weiß (oder genug Freizeit hat, um eine zusammenzustellen), wäre ich sehr dankbar.
Die akzeptierte Antwort enthält entweder einen Link zu einer solchen Liste oder die Liste selbst.
quelle
Antworten:
Beachten Sie, dass in dieser Antwort nur neue Sprachfunktionen aufgeführt sind,
keine neuen VCL / FMX-Funktionen.
Hier sind die Links zum RAD Studio-Dokument:
Die vollständige Liste von Embarcadero: Was ist neu?
Siehe auch: David I's Liste
Zusammenfassen:
Delphi 10.3.x, 10.4 (noch nicht erschienen, dies ist spekulativ)
Delphi 10.3
Delphi 10.2 Tokio
@
Operators ist nur zulässig, wenn das Array hart umgewandelt wird.Delphi 10.1 Berlin
[weak]
,[unsafe]
und[volatile]
Attribute werden auf allen Compilern unterstützt.Delphi 10 Seattle
Delphi XE8
Delphi XE7
Neue intrinsische Compiler-Routinen (undokumentiert):
function IsManagedType(T: TypeIdentifier): Boolean; function HasWeakRef(T: TypeIdentifier): Boolean; function GetTypeKind(T: TypeIdentifier): TTypeKind; function IsConstValue(Value): boolean;
Delphi XE6
Delphi XE5
Benötigt ein Gerät mit ArmV6 + Neon oder ArmV7 für die Bereitstellung
führt die bedingte Definition von ANDROID ein
Delphi XE4
Das folgende neue conditionals eingeführt / aktiviert in XE4:
AUTOREFCOUNT
CPUARM
EXTERNAL_LINKER
IOS
NEXTGEN
UNDERSCOREIMPORTNAME
WeakRef
WEAKINSTREF
WEAKINTREF
dependency
Direktive zur Angabe der Abhängigkeiten einer externen Bibliothek (bis XE8 nicht dokumentiert).Beachten Sie, dass ein Großteil der Grundlagen für ARC bereits in XE3 vorhanden war, ein Großteil jedoch deaktiviert war
$IF
Aussagen konnten nur mit beendet werden$IFEND
, und die$IFDEF
,$IFNDEF
,$IFOPT
könnten Richtlinien nur mit beendet werden$ENDIF
.Bei XE4 änderte sich dies, sodass $ ENDIF zu einem akzeptierten Terminator für $ IF, $ IFDEF, $ IFNDEF und $ IFOPT wurde.
Delphi XE3
AtomicExchange()
,AtomicIncrement()
,AtomicCmpExchange()
,AtomicDecrement()
Delphi XE2
Packed
Erzwingt jetzt die Byte-Ausrichtung von Datensätzen (vor XE2 war dies nicht unbedingt der Fall)Acht neue DEFINEs wurden hinzugefügt:
ALIGN_STACK
CPUX86
CPUX64
MACOS (Mac-Betriebssystem)
MACOS32
PC_MAPPED_EXCEPTIONS
PIC
WIN64
uses
Klausel sind jetzt vollständige Bereichsnamen für Einheiten erforderlich .{$ExcessPrecision on/off}
Compiler-Direktive (nur x64)Delphi XE
{$STRINGCHECKS}
Compiler-Direktive wird in XE ignoriert.{$ALIGN}
Direktive: Die akzeptablen Werte für die{$ALIGN}
Direktive umfassen jetzt 1, 2, 4, 8 und 16.{$CODEALIGN}
Direktive, die die Startadresse für eine Prozedur oder Funktion festlegt.{$STRONGLINKTYPES ON}
RichtlinieDelphi 2010
as
Operator kann eine Schnittstellenreferenz auf das Objekt zurückgesetzt werden, aus dem sie extrahiert wurde.is
Operator kann überprüft werden, ob eine Schnittstellenreferenz aus einer bestimmten Klasse extrahiert wurde.TObject(SomeInterface)
.delayed
Direktive gibt an, dass eine externe Bibliothek wie eine DLL nicht zur Deklarationszeit geladen werden soll, sondern bis zum ersten Aufruf der Methode warten sollDelphi 2009
string
jetzt zugeordnetUnicodeString
.{$HighCharUnicode on|off}
Compiler-Direktivefunction Default(T): T
intrinsische Funktion (undokumentiert){$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
Funktion kann einen Parameter annehmen, der ein Ergebnis angibt.resourcestrings
als Widestrings;TObject
hat zusätzlich zu seinem VMT-Zeiger einen zusätzlichen versteckten Zeiger aufTMonitor
;deprecated
Schlüsselwort kann jetzt zusätzlichen Text enthaltenDelphi 2007
Beachten Sie, dass Delphi 2007 eine nicht brechende Version ist. DCUs von D2006 funktionieren in D2007 unverändert .
Delphi 2006
static
Methoden und Eigenschaften;strict
Schlüsselwort für private / geschützte Sichtbarkeit ;final
Schlüsselwort für virtuelle Methoden;{$METHODINFO}
Richtlinie;Delphi 2005
for ... in
Schleifen,inline
Stichwort{$REGION}
/{$ENDREGION}
RichtlinienDelphi 7
{$WARN UNSAFE_CODE ON}
TFormatSettings
Struktur formatieren und analysieren .Delphi 6
[TCustomVariantType][68]
Bietet Operatorüberladung für benutzerdefinierte Variantentypen{$IFDEF MSWINDOWS}
{$IFDEF LINUX}
{$LIBPREFIX}
{$LIBSUFFIX}
{$LIBVERSION}
{$MESSAGE 'message'}
{$SetPEFlags}
{$IF}{$ELSE}
Compiler-Direktivenexperimental
,deprecated
,library
,platform
(aber ohne zusätzlichen Text veraltete)OLEVariant
{$J+}
)varargs
externer Funktionen (jedoch nur für diecdecl
Aufrufkonvention)Delphi 5
Keine neuen Sprachfunktionen, aber:
Delphi 4
LongWord
undInt64
;Cardinal
ist ein UINT32 (bevor es ein vorzeichenloser 31-Bit-Wert war)Real
dauert 8 Bytes und ist das gleiche wiedouble
(zuvor waren es 6 Bytes);{$REALCOMPATIBILITY ON}
Compiler-Direktive;REAL48
ersetzt das alte 6-Bytereal
;resourcestrings
{$EXTERNALSYM}
und{$NODEFINE}
Richtlinienimplements
Schlüsselwort für EigenschaftenDelphi 3
true
werden-1
anstelle von 1 gespeichert (Boolean bleibt unverändert)packages
.out
Parameter.Widestring
interface
und Unterstützung fürdispinterface
Schlüsselwörter und COM (dispid
).Delphi 2
Ansistring
wirdshortstring
als Standardzeichenfolgentyp ersetztCurrency
Variant
(für die Interaktion mit der OLE-Automatisierung).ThreadVar
Schlüsselwort.packed
Schlüsselwort überschreibt dieses Verhalten.1899/12/30
unter D1, bei dem es gestartet wurde0000/00/00
finalization
Schlüsselwortregister
undstdcall
Aufrufkonventionen hinzugefügt.packed
Stichwort.quelle
$LIBPREFIX
et al Direktiven gibt es mindestens seit D7 (ich vermute D6, da sie Kylix verwandt sind)Um die Antwort von Johan zu ergänzen, überprüfen Sie diesen Eintrag in meinem Blog
List of changes between versions of Delphi (Since Delphi 5)
und die ausgezeichnete Seite, auf derThe TIndex
die meisten neuen Funktionen seit Delphi 2005 und Ressourcen zu den einzelnen Funktionen aufgeführt sind.quelle
Die jedi.inc Datei vom Dephi JEDI - Projekt verwendet stellt eine Reihe von Feature definiert. Wenn Ihr Projekt MPL-kompatibel ist, können Sie es sogar zur Funktionserkennung verwenden und sich die Mühe ersparen, dieses bestimmte Rad neu zu erfinden.
Beispielsweise wird definiert,
SUPPORTS_FOR_IN
ob der Compiler Enumeratoren unterstützt. Man könnte Ihren Enumerator-Code in eineIFDEF
Überprüfung für diese Definition einschließen, anstatt nach einer bestimmten Compiler-Version zu suchen.quelle
jedi.inc
zumindest genau ist, während Johans Liste einige Überprüfungen benötigt.