Liste der Delphi-Sprachfunktionen und der Version, in der sie eingeführt / veraltet wurden

113

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.

LaKraven
quelle
F: Warum genau brauchen Sie eine solche Liste? F: Versuchen Sie, einen Codesatz (möglicherweise eine Komponente oder Bibliothek) zu erstellen, der alle Plattformen zwischen BDS2007 und XE2 unterstützt (dh keine neueren Funktionen als BDS2007 verwendet)? F: Wenn ja, warum nicht einfach versuchen, 2007 zu kompilieren und sehen, was kaputt geht? (PS: Ich benutze BDS2006 immer noch gerne;)).
Pauls4
8
Simon prüfe diese Frage Verschiedene Liste der Neuerungen in Delphi Language, RTL, VCL? , Auch auf meinem Blog
halte
3
@ paulsm4 1) So kann ich Funktionsbeschränkungen für Versionen in öffentlichen Bibliotheken berücksichtigen, 2) Ja (aber nicht unbedingt eine Komponentenbibliothek), 3) Weil es einfacher ist, jeden einzelnen Aspekt einer Bibliothek im Voraus zu kennen, als ständig verschiedene Versionen zu testen . Theoretisch würde D2006 gut funktionieren, aber ich werde es nicht aktiv unterstützen (keine Beleidigung).
LaKraven

Antworten:

158

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

  • Der 64-Bit-Linux-Compiler verwendet kein ARC mehr , sondern das standardmäßig verwaltete Handbuch, das dem des Windows-Compilers entspricht. Dies erleichtert das Portieren von Code von Windows oder OSX nach Linux erheblich.
  • Inline-Variablen mit automatischer Typinferenz
  • 8-Bit-AnsiChar / AnsiString-Unterstützung bei der Aktivierung unter Linux.
  • C ++ Builder und Delphi verwenden jetzt für alle Aufrufe dasselbe ABI.

Delphi 10.2 Tokio

Delphi 10.1 Berlin

Delphi 10 Seattle

  • Unterstützung für Android 5.1.1 und iOS 8.4
  • Verbesserte Behandlung von OSX-Ausnahmen

Delphi XE8

  • Unterstützung für 64-Bit-iOS;
  • Neue Integer-Typen: FixedInt , FixedUInt 32-Bit-Integer-Typen auf allen Plattformen;
  • Neue plattformabhängige Ganzzahltypen: LongInt , LongWord (64-Bit unter iOS-64, 32-Bit unter allen anderen Plattformen);

Delphi XE7

Delphi XE6

Delphi XE5

Delphi XE4

Bei XE4 änderte sich dies, sodass $ ENDIF zu einem akzeptierten Terminator für $ IF, $ IFDEF, $ IFNDEF und $ IFOPT wurde.

Delphi XE3

Delphi XE2

Delphi XE

  • Die {$STRINGCHECKS}Compiler-Direktive wird in XE ignoriert.
  • Neuer 16-Byte-Wert für die {$ALIGN}Direktive: Die akzeptablen Werte für die {$ALIGN}Direktive umfassen jetzt 1, 2, 4, 8 und 16.
  • Neue {$CODEALIGN}Direktive, die die Startadresse für eine Prozedur oder Funktion festlegt.
  • Die {$STRONGLINKTYPES ON}Richtlinie
  • Unterstützung für reguläre Ausdrücke.

Delphi 2010

  • Erweiterte Delphi RTTI (Informationen zum Laufzeittyp).
  • Attribute
  • Mit dem asOperator kann eine Schnittstellenreferenz auf das Objekt zurückgesetzt werden, aus dem sie extrahiert wurde.
  • Mit dem isOperator kann überprüft werden, ob eine Schnittstellenreferenz aus einer bestimmten Klasse extrahiert wurde.
  • Normales unsicheres Casting kann an einer Schnittstelle durchgeführt werden : TObject(SomeInterface).
  • Eine neue delayedDirektive gibt an, dass eine externe Bibliothek wie eine DLL nicht zur Deklarationszeit geladen werden soll, sondern bis zum ersten Aufruf der Methode warten soll
  • Klassenkonstruktor / Destruktor

Delphi 2009

Delphi 2007

  • Keine mir bekannten Sprachänderungen;
    Beachten Sie, dass Delphi 2007 eine nicht brechende Version ist. DCUs von D2006 funktionieren in D2007 unverändert .
  • (Die .NET 'Persönlichkeit' von 2007 führte Generika ein )

Delphi 2006

Delphi 2005

  • for ... in Schleifen,
  • inline Stichwort
  • Platzhalter in Verwendungsanweisung erlaubt
  • verschachtelte Typen
  • verschachtelte Konstanten
  • {$REGION}/ {$ENDREGION}Richtlinien

Delphi 7

  • drei zusätzliche Compiler-Warnungen:
    • Unsafe_Type,
    • Unsafe_Code und
    • Unsafe_Cast. Diese Warnungen sind standardmäßig deaktiviert, können jedoch aktiviert werden
  • neue Compiler-Direktive {$WARN UNSAFE_CODE ON}
  • Überladungen von Routinen, die Zahlen, Datums- und Uhrzeitwerte und Währungen mithilfe einer TFormatSettingsStruktur formatieren und analysieren .

Delphi 6

Delphi 5

Keine neuen Sprachfunktionen, aber:

Delphi 4

  • Dynamische Arrays
  • LongWordund Int64; Cardinalist ein UINT32 (bevor es ein vorzeichenloser 31-Bit-Wert war)
  • Realdauert 8 Bytes und ist das gleiche wie double(zuvor waren es 6 Bytes);
    • Überschreiben mit der neuen {$REALCOMPATIBILITY ON}Compiler-Direktive;
    • REAL48ersetzt das alte 6-Byte real;
  • Unterstützung für resourcestrings
  • Methodenüberladung
  • Standardparameter
  • {$EXTERNALSYM}und {$NODEFINE}Richtlinien
  • implementsSchlüsselwort für Eigenschaften

Delphi 3

  • Wordbool, Longbool und Bytebool truewerden -1anstelle von 1 gespeichert (Boolean bleibt unverändert)
  • Komponenten müssen mit installiert werden packages.
  • Behauptungen.
  • out Parameter.
  • Widestring
  • interfaceund Unterstützung für dispinterfaceSchlüsselwörter und COM ( dispid).

Delphi 2

  • Unterstützung für 32-Bit;
  • Ansistringwird shortstringals Standardzeichenfolgentyp ersetzt
  • Currency
  • Variant (für die Interaktion mit der OLE-Automatisierung).
  • Threading-Unterstützung und ThreadVarSchlüsselwort.
  • 4-Byte-Daten sind 4-Byte-ausgerichtet. Neues packedSchlüsselwort überschreibt dieses Verhalten.
  • TDateTime beginnt 1899/12/30 unter D1, bei dem es gestartet wurde0000/00/00
  • neues finalizationSchlüsselwort
  • registerund stdcallAufrufkonventionen hinzugefügt.
  • packed Stichwort.
Johan
quelle
Ah, wunderbar! Ich konnte keine Möglichkeit finden, das Docwiki dazu zu bringen, mir Seiten zu zeigen, die für ältere Versionen von Delphi (vor XE2) spezifisch sind ... keine Ahnung warum! Das ist wunderbar und wurde als die richtige Antwort markiert! Vielen Dank!
LaKraven
@DavidHeffernan Es ist nützlich, die Funktionen 2007 neu zu haben, da dies die Grundlinie festlegt. In gewissem Sinne werde ich mit Sicherheit wissen, ob ein Teil von dem, was ich produziere, möglicherweise in früheren Versionen funktionieren könnte (selbst wenn ich es selbst habe keine Absicht, es zu unterstützen)
LaKraven
9
Auf meinem Blog
halte
3
Holy Crap VERZÖGERT, das ist super! Warum geben sie dir diese Liste nicht, wenn du ein Upgrade machst?
Peter Turner
1
Dies ist nicht korrekt. $LIBPREFIXet al Direktiven gibt es mindestens seit D7 (ich vermute D6, da sie Kylix verwandt sind)
Free Consulting
16

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 der The TIndexdie meisten neuen Funktionen seit Delphi 2005 und Ressourcen zu den einzelnen Funktionen aufgeführt sind.

RRUZ
quelle
Vor einiger Zeit wurde eine andere Delphi-Site delphi3000 als gefährlich für einige Antivirenprogramme markiert.
RRUZ
2
Ich bin der Eigentümer von The TIndex und kann bestätigen, dass es sich um ein falsches Positiv handelt.
LachlanG
7

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_INob der Compiler Enumeratoren unterstützt. Man könnte Ihren Enumerator-Code in eine IFDEFÜberprüfung für diese Definition einschließen, anstatt nach einer bestimmten Compiler-Version zu suchen.

afrazier
quelle
Ja, dieses Include ist sicherlich hilfreich, aber es fehlt die Vollständigkeit einer detaillierten Liste (daher diese Frage). Vielen Dank für den Vorschlag ... betrachten Sie die akzeptierte Antwort auf diese Frage als eine Verbesserung der Informationen von jedi.inc :)
LaKraven
1
@ LaKraven: Stimmt, es gibt eine Menge Dinge, die es nicht bekommt, aber für einige mag es genug sein. Es hat auch den Vorteil, bereits erledigt zu sein. :-) Persönlich denke ich, dass es auch nützlich sein könnte, die VCL-Hierarchien zu reduzieren, die Copyright-Header zu entfernen und sie alle in ein Versionskontroll-Repository zu werfen. Auf diese Weise können Sie sehen, wann bestimmte RTL / VCL-Funktionen implementiert wurden.
Afrazier
@ LaKraven, ich glaube was jedi.inczumindest genau ist, während Johans Liste einige Überprüfungen benötigt.
Kostenlose Beratung