Neuerungen

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Hauptseite

RAD Studio 11.0 Alexandria enthält die folgenden neuen und verbesserten Features:

Inhaltsverzeichnis

Neue IDE-Erweiterungen

IDE für High DPI

Die IDE von Delphi, C++Builder und RAD Studio ist jetzt High-DPI-fähig. Die Ausführung mit aktiviertem High DPI ist gegenwärtig eine Laufzeitoption. Alle Fenster in der IDE unterstützen jetzt High DPI. Dazu zählt die Änderung der Skalierung beim Ziehen von einem Monitor zu einem anderen. Die IDE-Funktionalität bezieht sich auf:

  • Das Hauptfenster
  • Alle andockbaren Fenster, wie Objektinspektor, Projekt, Struktur, Meldungen usw. sowie alle Eigenschaftseditoren im Objektinspektor.
  • Alle Dialogfelder wie Objektgalerie, IDE-Optionen und Projektoptionen, Info usw.
  • Alle Inhaltsfenster wie Editor, Formular-Designer, Historie usw.

Die IDE-Stile (Hell, Dunkel und Gebirgsnebel) wurden aktualisiert und unterstützen jetzt ebenfalls High DPI.

High DPI für den VCL-Formular-Designer

In RAD Studio 11.0 kann die Skalierung im VCL-Formular-Designer auf drei verschiedene Arten erfolgen. Sie können dies unter Tools > Optionen > Benutzeroberfläche > Formular-Designer > High DPI anpassen. Die verfügbaren Optionen sind "Automatisch (Bildschirm-PPI)", "Low DPI (96 PPI)" und "Vom Benutzer bearbeitbar", wofür Sie einen bestimmten PPI-Wert festlegen können.

High DPI für den FMX-Formular-Designer

Der FireMonkey-Designer skaliert ein Formular auf die gleiche Weise wie ein FMX-Formular zur Laufzeit. Die Koordinaten bleiben unverändert (d. h., eine an (20, 20) platzierte Schaltfläche verbleibt an (20, 20), unabhängig von der High-DPI-Skalierung des Monitors, auf dem sich der FMX-Designer befindet). Es handelt sich um eine rein visuelle Skalierung.

Willkommensseite

Der IDE wurde eine neue VCL-basierte Willkommensseite hinzugefügt. Sie bietet die folgenden Features:

  • Mehrere Frames, die hinzugefügt, entfernt oder deren Position und Größe nach Bedarf geändert werden können
  • Optimale Skalierung für High DPI
  • Verwenden unserer eigenen Technologie

Änderungen der Open Tools API

Alle APIs, die Bilder übergeben, wie die Startbildschirm-Dienste, Info-Dialogfeld, IDE Insight und andere Bereiche, wurden für die Unterstützung von High-DPI-Bildern aktualisiert. Dadurch können Sie mehrere Auflösungen desselben Symbols übergeben, die der internen Bildersammlung hinzugefügt und mit einer virtuellen Bilderliste verwendet werden. Die Methoden übernehmen ein Array mit beliebigen TGraphic-Objekten, PNG-Bilder werden jedoch empfohlen.

VCL-Stile im Designer

VCL-Steuerelemente können optional mit Stilen im Designer gerendert werden.

Warnung: Dieses Feature ist nicht standardmäßig aktiviert. Es kann im Dialogfeld "Tools-Optionen" im Abschnitt Benutzeroberfläche > Formular-Designer aktiviert werden. Der Optionsname lautet "VCL-Stile aktivieren".

Der StyleName-Eigenschaftseditor zeigt die im Projekt verfügbaren Stile an und rendert eine Vorschau (wie eine Schaltfläche aussieht). Denken Sie daran, dass mit der Auswahl "Windows" der Plattformstil gemeint ist, und wenn Sie die Eigenschaft leer lassen, wird der Stil des übergeordneten Steuerelements (oder des übergeordneten Formulars) verwendet.

Beachten Sie, dass der VCL-Formular-Designer nun über eine benutzerdefinierte Titelleiste und einen benutzerdefinierten Frame im Windows 10-Stil verfügt und nicht den klassischen Windows-Frame verwendet. Wenn kein Formularstil festgelegt ist, wird ein Windows 10-Stil verwendet. Ist für das Formular ein VCL-Stil festgelegt, übernimmt der Frame den ausgewählten Stil des Formulars.

Entwerfen von Formularen und Bearbeiten von Quelltext

In 10.4.2 wurde die Registerkarte "Design" deaktiviert, wenn ein Formular in einem anderen Fenster entworfen wurde. Jetzt ist die Registerkarte stets aktiviert, aber beim Entwurf in einem anderen Fenster wird eine Meldung angezeigt. Sie können auf eine Schaltfläche klicken, um den Designer in das aktuelle Fenster zu verschieben.

Leistung der Options-Dialogfelder

Die Options-Dialogfelder (IDE und Projektoptionen) sollten in einem Bruchteil der Zeit früherer Versionen geladen werden. In der Vergangenheit wurden alle Seiten beim Öffnen des Dialogfeldes geladen. Jetzt wird eine Seite erst bei Bedarf geladen (und die Steuerelemente erstellt).

Dritthersteller sollten sich über die Auswirkungen dieser Änderung auf ihre Einstellungen im Klaren sein.

Design-Richtlinien und -Ränder in FireMonkey

Der FireMonkey-Designer erhielt in Version 11.0 Richtlinien und andere Features, die im VCL-Designer mit einer anderen Implementierung vorhanden sind. Hinweise zu Komponenten werden angezeigt, wenn Sie diese verschieben oder deren Größe ändern. Für Steuerelemente sind ebenfalls Richtlinien für die seitliche Ausrichtung vorhanden und die Standard-Randabstände werden mit einer Linie angezeigt.

Die Steuerelemente für die Größenänderung von Formularen und Komponenten sehen nun genauso aus und verhalten sich auch so wie im VCL-Formular-Designer.

DelphiLSP für Visual Studio Code und andere Editoren

In RAD Studio 11.0 kann DelphiLSP mit anderen Editoren verwendet werden. Im Rahmen dieser Neuerung haben wir eine Visual Studio Code-Erweiterung mit DelphiLSP erstellt.

Weitere Informationen zum diesem Feature finden Sie hier.

Verbesserungen für Code Insight (DelphiLSP)

DelphiLSP

Der Schwerpunkt von LSP in RAD Studio 11.0 liegt auf Qualität und darauf, einen verlässlichen Ersatz für das klassische Code Insight zu bieten. Zu den wesentlichsten Verbesserungen zählen: das Analysieren von Units, die Include-Dateien enthalten, Verbesserungen für den Neustart des Servers und Verbesserungen der Syntaxelemente, die der Server versteht.

Klassische Programmierhilfe entfernt

Die klassische Delphi-Programmierhilfe wurde aus der IDE entfernt. Für Delphi Code Insight ist nur die LSP-Option verfügbar.

Warnung für Build-Ereignisse

Build-Ereignisse können beliebige Befehle auf Ihrem System ausführen. Es ist üblich, Projekte, die Build-Ereignisse enthalten, online von Drittherstellern zu beziehen. RAD Studio gibt jetzt eine Warnung aus, wenn ein Projekt ein Build-Ereignis in einer Konfiguration (darunter in einer, die Sie aktuell nicht erzeugen) enthält

Warnung: Ein Projekt kann als vertrauenswürdig gekennzeichnet, dann eine neuere modifizierte Version bezogen werden und Sie werden nicht gewarnt, selbst wenn es ein neues Build-Ereignis enthält. Dies ist eine Sicherheitsmaßnahme, die Sie unterstützen soll, die aber nicht in allen Situationen als vollständig vorbeugend angesehen werden darf.

Andere IDE-Änderungen

Im Quelltext-Editor wird jetzt Consolas als Standardschriftart verwendet. Mit der IDE wird eine Reihe anderer häufiger Codierungsschriftarten wie Fira Code installiert. Beachten Sie, dass der Editor keine Ligaturen unterstützt, aber mit diesen neuen Schriftarten wird Text mit High DPI gestochen scharf gerendert. "Meldungen anzeigen" wurde wieder in das Kontextmenü des Editors aufgenommen.

Die Fortschrittsleiste von Code Insight wird bei Abschluss der Arbeit verborgen.

Verbesserungen der Delphi-Toolkette

Neue Zielplattform macOS ARM 64 Bit

RAD Studio 11.0 unterstützt eine neue Delphi-Zielplattform, macOS ARM 64 Bit, für die native Entwicklung für die neuen M1 Apple Silicon-CPUs mit macOS 11. Sie können auf dieser Plattform native M1-Anwendungen erzeugen (zur Ausführung ist M1-Hardware erforderlich). Wir behalten unseren Support für Intel 64 Bit und die Erstellung universeller Binäranwendungen bei, einschließlich ARM- und Intel-Binärdateien in einem einzigen Package.

Universelle Binärdateien

Sie können eine universelle Binärdatei erstellen, die sowohl Intel- als auch ARM-Code enthält. Dazu müssen Sie als Zielplattform macOS ARM 64 Bit verwenden. Navigieren Sie in den Projektoptionen (macOS ARM 64 Bit muss die aktuelle Plattform sein) zu Erzeugen > Delphi-Compiler > Compilieren > Weitere und aktivieren Sie "Universelle macOS-Binärdatei generieren (x86_64 + arm64)". Nachdem Sie die Anwendung bereitgestellt haben, befindet sich die universelle Binärdatei im Ordner OSXARM64\Debug.

Veraltete MacOS-Elemente

Im Release RAD Studio 11.0 ist die Unit Macapi.QTKit für macOS/X64 veraltet und wurde aus der Bibliothek macOS/Arm64 entfernt. Wir haben ebenfalls die Unit "Macapi.Quicktime" aus dem Produkt für die Bibliotheken macOS/X64 und Arm64 entfernt.

Binäre Literale und Zifferntrennzeichen

Zur Delphi-Sprache wurde in Olympus die Unterstützung für binäre Literale zusätzlich zu dezimalen und hexadezimalen hinzugefügt. Ein binäres Lateral verwendet das Symbol % als Präfix (dieselbe Syntax wird von anderen Pascal-Compilern verwendet):

const
  Four = %100;
var
  x: Integer;
begin
  x := %1001001;

In der Sprache wurde zudem ein Zifferntrennzeichen eingeführt, mit dem die Lesbarkeit von Literalwerten mit vielen Ziffern verbessert werden kann. Das Trennzeichen ist der Unterstrich "_" und es wird im Grunde beim Analysieren und Compilieren von Code ignoriert. Dies ähnelt sehr dem Feature, das in C# 7.0 eingeführt wurde.

const
  AMillion = 1_000_000;

Selbstverständlich können Sie die Zifferntrennzeichen für binäre Literale verwenden.

Unterstützung des Inline-Assembler für AVX-Anweisungen (AVX-512)

Wir haben Unterstützung für asm-Code für neuere Anweisungssätze eingeführt, einschließlich AVX2 (ymm) und AVX512 (zmm).

Achtung: Zum Testen dieses Features benötigen Sie eine mit AVX-512 kompatible CPU (etwa eine der neuen INTEL-CPUs). Weitere Informationen finden Sie unter:

https://de.wikipedia.org/wiki/Advanced_Vector_Extensions#CPUs_mit_AVX-512}}

Verbesserungen der C++-Toolkette

Neue C++-Codeformatierung

Die Technologie zur Codeformatierung für C++ wurde vollständig ersetzt. Die Codeformatierung verwendet jetzt das Clang-Format. Die neuen Formatierungsoptionen für C++ befinden sich unter Sprache > C++ > Formatierung. Sie können Code immer manuell formatieren, aber Sie können auch Ihren Code durch die IDE automatisch beim Speichern oder sogar beim Schreiben formatieren lassen. Die beiden letzten Möglichkeiten werden mit der Einstellung "Auto-Formatierung" gesteuert. Legen Sie sie auf "Beim Speichern formatieren" oder "Bei neuer Zeile formatieren" fest.

Die IDE verwendet die Formateinstellungen, die in einer .clang-format-Datei im Quellordner angegeben sind, eine übliche C++-Projektkonvention. Wird diese Datei nicht gefunden, wird das Format verwendet, das Sie im Options-Dialogfeld (oben) auswählen. Die Vorgabe ist hier die von Embarcadero empfohlene Formatierung.

C++/Delphi-Kompatibilität

Nun stehen mit C++ kompatible RTTI für Delphi-Typen zur Verfügung. Sie können für einen Delphi-Typ "make_shared" verwenden und es gibt Typumwandlungen für die Verwendung von Delphi-Typen in C++.

Mit C++ kompatible RTTI für Delphi-Typen

In der Vergangenheit standen die C++-Typinformationen nicht für Delphi-Typen zur Verfügung, das heißt, dass der Zugriff auf das Ergebnis von typeid(delphi-type), wobei delphi-type ein Typ ist, der aus Pascal-Code stammt oder der eine Klasse im Delphi-Stil in C++ ist, zu einer Zugriffsverletzung (AV) führen würde. Beachten Sie, dass typeid einfach std::typeinfo für einen Typ zurückgibt oder für den am meisten abgeleiteten Typ dieser Instanz bei einem polymorphen Typ.

typeid() gibt jetzt std::typeinfo zurück und mit C++ kompatible RTTI werden für Delphi-Typen generiert.

Verwenden von Smart-Zeigern mit Delphi-Klassen

Sie können std::make_unique und std::make_shared für eine Klasse im Delphi-Stil (eine in Delphi definierte oder in C++, aber von einer in Delphi definierten abgeleiteten) verwenden.

Typumwandlungen

Die RTL enthält nun Hilfsmethoden für Typumwandlungen zwischen Delphi-Typen und C++-Strings (und Delphi-Strings). Dies umfasst auch Umwandlungen von TDateTime in String-Typen sowie die Möglichkeit, einfach einen C++-String in einen Delphi-String umzuwandeln (zuzuweisen) und std::string_view für einen Delphi-String zu verwenden. Typumwandlungen in und aus Strings Es gibt jetzt die Methoden to_string() und from_string() für viele Typen, um in und aus Strings (UnicodeString, WideString und AnsiString, einschließlich mit Vorlagen nach Codepage versehene Strings) umzuwandeln. Diese Methoden stehen für die folgenden Typen zur Verfügung:

  • Currency
  • TDateTime
  • 32- und 64-Bit-Integer-Typen mit und ohne Vorzeichen
  • Gleitkommatypen (wie Extended)
  • Variants

Sonstiges

  • Der Clang-Compiler gibt jetzt eine Warnung aus, wenn ein Interface nicht von IUnknown abgeleitet ist.
  • Sie können jetzt mit einem Prozess mit dem C++-Win64-Debugger verbinden.
  • Ein Problem, bei dem bei der Stapel-Compilierung für ein Projekt .c-Dateien ignoriert wurden, wurde behoben.

Änderungen bei der VCL und FireMonkey

In RAD Studio 11.0 wurden eine Vielzahl kleiner Verbesserungen an der VCL-Bibliothek vorgenommen. Der Fokus lag dabei auf dem Entfernen einiger verbliebender XP-Altlasten und Inkonsistenzen mit Windows 10 sowie auf der Verbesserung zentraler Bibliotheksfunktionen.

TRichEdit-Komponente aktualisiert auf RichEdit 4.1 (MSFTEDIT.dll)

Wir haben die Implementierung der VCL-TRichEdit-Komponente aktualisiert, damit eine neuere Version des Plattformsteuerelements unterstützt wird. Außerdem ist TDBRichEdit.Lines jetzt eine als public deklarierte Eigenschaft. Die RichEdit-URL-Erkennung verfügt über neue Features wie EnableURLs, ShowURLHint und SetSelTextToFriendlyURL.

An den RichEdit-Textattributen wurden einige Änderungen vorgenommen. Sie erhielten weitere Eigenschaften, wie BackColor, Disabled, Hidden, Link, Offset, RevAuthor und Subscript. TParaAttributes hat zudem neue Typen und eine neue Eigenschaft. Außerdem hat TCustomRichEdit jetzt eine neue, als public deklariere Methode.

VCL-Modernisierung

Neue Standardschriftart

Für VCL-Anwendungen ist die Standardschriftart jetzt Segoe UI 9. Die Titelschriftart der VCL-Stile wird an die gleiche Standardschriftart angepasst.

Ränder bei Memo und RichEdit

Neue Eigenschaft in TCustomMemo, veröffentlicht in TMemo, TDBMemo, TRichEdit, TDBRichEdit.

Optionsfeldgruppe ohne Frame

In TCustomGroupBox haben wir diese als public deklarierte Eigenschaft in TGroupBox veröffentlicht, die ShowFrame, HeaderFont und DefaultHeaderFont enthält.

DropDownWidth für TComboBox

Es gibt in TCustomComboBox und davon abgeleiteten Klassen (public in der Klasse TCustomComboBox, published in der Klasse TComboBox) zwei neue Eigenschaften, DropDownWidth und AutoDropDownWidth.

TTreeView-Unterstützung für Kontrollkästchen

TTreeView definiert jetzt zwei Eigenschaften, die Kontrollkästchen unterstützen. Weitere Informationen dazu finden Sie hier.

Multi-Frame-Unterstützung für TWICImage

Multi-Frame-Unterstützung für TWICImage: Es gibt 2 neue Eigenschaften im Typ TWICImage, die als FrameCount und FrameIndex definiert sind. Diese beiden Eigenschaften zusammen ermöglichen es Ihnen, alle gültigen Bilder in einer Multi-Frame-Bilddatei zu lesen.

Neue TLabelDBEdit-Komponente

Es gibt nun eine datensensitive Version des VCL-Steuerelements TLabeldEdit. Für dessen Implementierung wurde die Hierarchie der zugeordneten Steuerelemente geändert:

  • TCustomLabeledEdit
  • ist von TCustomMaskEdit abgeleitet
  • neue Eigenschaften: Align, EditMask usw. von TCustomMaskEdit geerbt
  • TDBEdit
  • ist von TCustomLabeledEdit abgeleitet
  • TDBLabeledEdit
  • neues Steuerelement, das von TDBEdit abgeleitet ist

Außerdem unterstützt RAD Studio 11.0 das Steuerelement TLabeledEdit in den Containern TFlowPanel und TGridPanel.

Verbesserungen bei Fehlermeldungen

  • Im Falle eines Fehlers beim Erstellen eines Formulars aus einem Stream enthält die Fehlermeldung jetzt den Namen der Formulardatei.
  • Das Exception-Dialogfeld hat die zusätzliche Schaltfläche "Kopieren" zum Kopieren der Fehlermeldung in die Zwischenablage.

Unterstützung für das CoolBar-V-Symbol

CoolBar unterstützt das V-Symbol über die neue boolesche Eigenschaft ShowChevron.

NumberBox

Die in 10.4.2 eingeführte Klasse TNumberBox hat einige weitere Features:

  • Der Typ CurrencyFormat wurde von Byte in TNumberBoxCurrencyFormat geändert.
  • Es gibt die neue Eigenschaft ValueCurrency.
  • Die Eigenschaft DisplayFormat ist jetzt als published deklariert.

Verbesserung der Threading-Sicherheit

In Allgemeinen sollten UI-Steuerelemente im Haupt-UI-Thread erstellt werden. Wenn Sie ein VCL-Steuerelement in einem Hintergrund-Thread erstellen, ist das Verhalten nicht definiert und kann zu ziemlich unklaren Zugriffsverletzungen führen.

Aus diesem Grund gibt es eine neue Klasseneigenschaft: TControl.RaiseOnNonMainThreadUsage

Wenn diese Eigenschaft True ist, löst die VCL eine Exception aus, wenn ein TWinControl-Fenster-Handle in einem anderem als dem Haupt-Thread erstellt wird. Dadurch werden Probleme verhindert, falls dies versehentlich geschieht. In COM-Szenarien und in anderen Fällen könnte die Erstellung eines Handles in einem sekundären Thread legitim sein und bleibt daher erlaubt.

VCL-StyleUtils.inc in eine reguläre Unit umgewandelt

Die Include-Datei StyleUtils.inc wurde in eine reguläre Unit umgewandelt. Entwickler (und Anbieter von Komponenten) können so ihren Code besser mit Unterstützung für VCL-Stile integrieren. In der früheren Include-Datei waren nämlich private Typen definiert, die im Allgemeinen nicht geändert und erweitert werden konnten, im Gegensatz zur neuen Unit.

Achtung: Obwohl wir uns bereit erklärt haben, den Code in eine Unit zu verschieben und einige Datentypen öffentlich und zugänglich zu machen, behalten wir uns das Recht vor, Änderungen an dieser Stil-API vorzunehmen, und können nicht dasselbe Maß an Kompatibilität mit externem Code garantieren, das die VCL- und RTL-Bibliotheken im Allgemeinen bieten.

Kleinere Änderungen

  • Wie Standarddialogfelder die Eigenschaften EncodingIndex und ShowEncodingList (die steuert, ob die Dropdown-Codierungsliste aktiviert und daher verfügbar ist) bereitstellen.
  • OnTracking-Ereignis für TTrackbar (wird ausgelöst, wenn sich die Position des Reglers auf einem Schieberegler ändert).
  • Optionen zum Überspringen von "Disabled" in TPageControl.FindNextPage mit dem zusätzlichen Parameter CheckTabEnabled.
  • TButtonCategory hat die Eigenschaft VisibleGutter.
  • TDateTimePicker und TRichEdit werden richtig angezeigt, wenn sie nicht aktiviert sind.
  • TScrollBox unterstützt in diesem Release automatisch das Mausrad. Beachten Sie, dass diese Änderung das Verhalten vorhandener Anwendungen auf nicht gewünschte Weise ändern könnte, da der neue Standard darin besteht, den Mausrad-Bildlauf für Steuerelemente ohne Fokus zu aktivieren.
  • VCL-Funktion ScaleImage unterstützt Alphakanal.
  • TVirtualImageList.Images verfügt über eine richtige Eigenschafts-Setter-Methode.
  • TTreeNode unterstützt den Status nsDropHilited.
  • Das Standardformular ist jetzt größer.
  • SetSelText und SetSelTextBuf verfügen jetzt über die Option, den Rückgängig-Puffer nicht zurückzusetzen.
  • Dies wird durch die neue Eigenschaft CanUndoSelText gesteuert. False ist die Vorgabe, wodurch die Abwärtskompatibilität beibehalten wird. Bei True kann Undo aufgerufen werden (oder ein Undo-Vorgang, der über die UI aufgerufen wird), um eine Änderung rückgängig zu machen, die mit Aufrufen von SetSelText oder SetSelTextBuf oder durch Zuweisungen an die Eigenschaft SelText vorgenommen wurde.
  • Einige kleine TEdgeBrowser-Verbesserungen.
  • TCustomTitleBarPanel hat jetzt die Eigenschaften TitleButtonClose, TitleButtonRestore, TitleButtonMin und das Ereignis OnUpdateTitlebarButtons.
  • TDateTimePicker ermöglicht das gemeinsame Ändern von Datum und Uhrzeit in der UI.
  • Ein TPngImage-Objekt steuert die Zuweisung (Assign) an und aus einem TWICImage-Objekt.
  • TWinControl unterstützt jetzt LockDrawing und UnlockDrawing, wodurch die Ausführung der Windows-Meldung WM_SETREDRAW ausgelöst wird:
  • Die Methode TWinControl.LockDrawing deaktiviert die Aktualisierung des Steuerelements.
  • Die Methode TWinControl.UnlockDrawing aktiviert die Aktualisierung des Steuerelements.
  • Die Eigenschaft TWinControl.IsDrawingLocked gibt True zurück, wenn LockDrawing aufgerufen wurde (und UnlockDrawing nicht aufgerufen wurde).
  • Die Eigenschaft TWinControl.RedrawDisabled gibt True zurück, wenn das Zeichnen des Win32-Steuerelements deaktiviert ist.

FireMonkey

Bei FireMonkey haben wir den Fokus auf einige zentrale Umgestaltungen gelegt, insbesondere auf Desktop und Windows. Jetzt sind Plattformdienste für macOS und Windows in separate Units umgewandelt, IFMXMultiDisplayService und TDisplay erweitert, alle metrikbezogenen Dienste in FMX.Platform.Metrics extrahiert, Größenbeschränkungen für Formulare und Refactoring von:

  • IFMXSaveStateService
  • IFMXDeviceService
  • IFMXVirtualKeyboardService
  • IFMXTimerService
  • IFMXLoggingService
  • IFMXMenuService

Google Play Billing Library Version 4

RAD Studio 11.0 unterstützt die neueste Version der Google Billing API, eine Aktualisierung, die im Laufe des Jahres für Play Store-Apps obligatorisch wird (letzte Frist ist der 21. November). Die neue API ist nahtlos in die FMX-Bibliothek integriert und Ihr Code sollte sich problemlos an die neue API anpassen lassen.

Unterstützung für Android API 30

Die Unterstützung für Android API 30 umfasst die folgenden Änderungen

  • Unterstützung für Android API 30 (eine Anforderung des Google Play Store für 2021)
  • Wir sind zudem von den alten "Support Library"-Bibliotheken zu den neuen "AndroidX"-Bibliotheken migriert.

Ebenfalls für Android unterstützt RAD Studio jetzt das Feature "Multidex" (das Ihrer App ermöglicht, mehrere "classes.dex"-Dateien zu erstellen) und verwendet den neueren "D8"-DEX-Compiler anstatt des alten "DX", um Java-Bytecode in DEX zu compilieren. Die neuen Releases enthalten ein anderes Set von Java-Bibliotheken. Alte Projekte sind somit nicht kompatibel. Wenn Sie ein Android-Projekt-Build mit einer älteren Version von RAD Studio öffnen, müssen Sie Folgendes ausführen:

  • Navigieren Sie zum andockbaren Fenster "Projekte".
  • Wählen Sie "Android 32 Bit" oder "Android 64 Bit" als aktive Zielplattform aus.
  • Klicken Sie mit der rechten Maustaste auf den Knoten "Bibliotheken".
  • Klicken Sie auf den Menüeintrag "Systemdateien auf Standard zurücksetzen".

Weitere Verbesserungen

  • Das FireMonkey Accessibility Pack ist jetzt im Hauptprodukt enthalten (und kein separater Download mehr)
  • Verbessertes Z-Reihenfolgenmanagement für Kombinationen von Stilen und Plattformsteuerelementen
  • Veraltete nicht bereichsabhängige Aufzählungswerte entfernt (das sind die FMX-Hilfsklassen, die zur Unterstützung veralteter Aufzählungen im Jahr 2014 hinzugefügt wurden)
  • Unterstützung für das Hochladen von Dateien in TWebBrowser auf der Android-Plattform

RTL und Daten

Es gibt viele Verbesserungen in den Kernbibliotheken von RAD Studio. Hier finden Sie eine Zusammenfassung der wichtigsten Änderungen bei der RTL, bei FireDAC sowie bei HTTP- und REST-Client-Bibliotheken und mehr.

Plattformbezeichner

Die RTL enthält einen neuen Plattformbezeichner, pidOSXArm64, für die macOS/Arm64-Plattform. Die vorhandenen Bezeichner pidAndroid32Arm und pidAndroid64Arm werden durch die neuen pidAndroidArm32 und pidAndroidArm64 ersetzt. Jetzt verwenden alle Plattformbezeichner dasselbe Format und dieselbe Compiler-Reihenfolge: <Plattformname> <Architekturname> <Bitanzahl>

RTL: TZipFile

Wir haben uns auf Qualität, Verbesserungen und Optimierungen von ZIP-Dateien (d. h. die TZipFile-Klasse der RTL) konzentriert. Wir haben Unterstützung für Zip64 und eine Methode zum Entfernen einer Datei in TZipFile hinzugefügt. Desweiteren hat TZipHeader die Methode GetFIleName erhalten, TZipFile.IsValid() akzeptiert einen Stream-Parameter und System.Zip arbeitet mit Dateien, die größer als 4 GB sind.

Verbesserungen für große RTL-Datenstrukturen

Wir haben einige Verbesserungen bei der Verwendung von geeigneten Datentypen für größere Speicherstrukturen unter 64-Bit-Compilern vorgenommen. Beispielsweise unterstützt TMemoryStream unter 64 Bit Datenstrukturen, die größer als 2 GB sind. In diesem Zusammenhang haben wir die neue Methode TThread.GetTickCount64 hinzugefügt (die bestehende Methode TThread.GetTickCount, die einen 32-Bit-Wert zurückgibt, verbleibt aus Kompatibilitätsgründen in der RTL).

Neue unterstützende Klasse für Records

Es gibt eine neue unterstützende Klasse für Records für TDateTime, die die Funktion "UTC Now" enthält (nicht in der Original-Date-RTL verfügbar) mit dem Namen NowUTC. Mit diesem Release wird zudem eine unterstützende Klasse für den Datentyp TCurrency in Delphi, TCurrencyHelper, eingeführt, die TDoubleHelper ähnelt.

Verbesserungen für Bluetooth und BLE

Verbesserungen in diesem Bereich beziehen sich auf das klassische Bluetooth und Bluetooth LE und die meisten Plattformen, insbesondere Windows 10 und Android (aber auch iOS und macOS). Zu den Verbesserungen gehört auch die Unterstützung von Beacons.

Weitere RTL-Erweiterungen

Verbesserungen an generischen Sammlungen

Wenn mehrere generische Typen verwendet werden, hatten einige generische Sammlungen früher TKey und TValue als symbolische Namen für die generischen Typen. Dies ist verwirrend, da TValue ein bestimmter Typ in der RTL ist. Um Verwechslungen zu vermeiden, wurden die symbolischen Namen geändert. Es gibt keine Auswirkungen auf bestehenden Code, da die symbolischen Namen durch konkrete Typen ersetzt werden, wenn die generischen Typen instanziiert werden. Darüber hinaus gibt es einige zusätzliche Konstruktoren für Sammlungsklassen, die als Parameter ein Array von Werten übernehmen, darunter:

procedure DoCheckStateChanged(Node: TTreeNode; CheckState: TNodeCheckState);
virtual;
constructor TList<T>.Create(const Values: array of T);
constructor TDictionary<TKey, TValue>.Create(const AItems: array of TPair<TKey, TValue>);

Die Implementierung von TDictionary Capacity, GrowThreshold und Hashing wurde verbessert, mit einem besseren Gleichgewicht zwischen Leistung, Speicherauslastung und minimalen Kollisionen. Die interne Implementierungsklasse TListHelper wurde zugunsten der Verwendung eines streng typisierten Felds TArray<T> entfernt und der gesamte damit zusammenhängende Streaming- und Datenzuordnungscode wurde aktualisiert.

RTTI

Offene-Array-Unterstützung für RTTI: ermöglicht den Aufruf von Methoden mit einem offenen Array-Parameter über RTTI und unterstützt auch offene Array-Argumente in TVirtualMethodInterceptor. TValue bietet spezielle Unterstützung für TDateTime. Außerdem wurde der Typaustausch zwischen TValue und Variant verbessert.

PPL

Der Zugriff auf die PPL-Thread-Pool-Statistiken wurde vereinfacht, d. h. die Methode TThreadPoolStats.Get ist jetzt public.

Streams

Die neue Klasse TPointerStream ermöglicht das Lesen und Schreiben von speicherinternen Daten unter Verwendung des Interface TStream, indem sie einen Zeigerstandort und eine Größe angibt. TStream.CopyFrom erfordert keine Angabe der Größe, die möglicherweise unbekannt ist. Die Methode wurde auch für einen großen Count optimiert (bis zu 400% Verbesserung).

Umwandlung von Datumswerten in Strings

Die Umwandlung von Datumswerten in Strings und die Rückumwandlung wurden verbessert. Es ist erwähnenswert, dass StrToDate jetzt strikt dem Formatstring "to date" folgt sowie Datumsformate mit Monats- und Tagesnamen und Datumsformate mit beliebigem Text darin unterstützt. Zudem wurde die Initialisierung der datums-/zeitbezogenen Eigenschaften von TFormatSettings verbessert und die Darstellung auf allen Plattformen vereinheitlicht.

Erstellen einer Interface-Instanz

Es gibt eine neue System.Generics.Defaults._MakeInterfaceInstance, mit der eine Interface-Instance erstellt werden kann, bei der alle Interface-Methoden durch anonyme Methoden dargestellt werden.

TNoRefCountObject

Die neue Klasse System.TNoRefCountObject ist eine nicht referenzgezählte IInterface-Implementierung (die das alte und seltsam benannte TSingletonObject ersetzt).

Optimierungen und Sonstiges

  • _FinalizeRecord und _FinalizeArray optimiert
  • Die alte Eigenschaft TDatamodule.OldCreateOrder wurde entfernt und ist standardmäßig auf true gesetzt. Falls die Eigenschaft in einer Formularbeschreibungsdatei vorhanden ist, wird sie ignoriert (führt aber nicht zu einem Fehler). Die alte Eigenschaft wurde aus Kompatibilitätsgründen mit einer älteren Logik für die Erstellungsreihenfolge in den frühen Versionen von Delphi vor langer Zeit verwendet.
  • Pascal System.Pos verbessert
  • Optimierung von TArray<T>.BinarySearch
  • Überladungen von TList<T>.Sort( ..., Index, Count ) hinzugefügt
  • System.IOUtils.TFile.Size hinzugefügt
  • TObject-Leistungsverbesserungen für ClassParent und InitInstance
  • Einige Verbesserungen für System.IOUtils.TPath
  • RTL-Unterstützung für einen Systempfad, der länger als 260 Zeichen ist, falls vom Betriebssystem (wie den neueren Versionen von Windows) unterstützt
  • Klasseneigenschaft TThread.OnSynchronize hinzugefügt
  • Die Meldungen EInOutError und EInOutArgumentException enthalten nun den Pfad und haben ein Pfad-Feld.

Leistung verbessert von:

  • _UInt32ToHexString und _UInt64ToHexString
  • Parse und TryParse für TSingleHelper und TDoubleHelper

Die TGUID-Datenstruktur ist jetzt nur in System.pas definiert.

JSON

  • ParseJSONValue() aus TJSONObject in TJSONValue verschoben
  • Überladenes TJSONObject.AddPair für einen Integer hinzugefügt

Änderungen von UTF8ToString

Die UTF8ToString-Überladung, die ein Array von AnsiChar akzeptiert, wurde entfernt und UTF8ToString(Byte-Array) ist veraltet. Die entfernte Funktion ist: UTF8ToString(const S: _PAnsiChr.

Workarounds finden Sie unter System.UTF8ToString.

FireDAC

  • Der PostgreSQL-Treiber unterstützt PostgreSQL bis zu Version 13, einschließlich Unterstützung für Stored Procedures von PostgreSQL
  • Offizielle Unterstützung für Oracle 19c und für Parameternamen mit 128 Zeichen für Stored Procedures von Oracle
  • TFDSortOption um soDigitsAsNumbers erweitert, entsprechend der ähnlichen TCompareOption in System.SysUtils
  • UI-Verbesserungen des FireDAC-Monitors
  • Firebird-Treiber verbessert, sodass er den Treiber in VendorHome und nicht im Unterordner /bin sucht (was bei älteren Firebird-Versionen korrekt war)

Internet, HTTP und REST-Client-Bibliotheken

  • Zeitüberschreitungsmechanismus für Back-End- und EMS-Client-Komponenten:
  • Die Klassen TEMSProvider, TKinveyProvider, TParseProvider haben 2 neue Eigenschaften: ConnectTimeout und ReadTimeout
  • TEMSApi.TConnectionInfo, TParseApi.TConnectionInfo, TKinveyApi.TConnectionInfo: haben die Variablen ConnectTimeout und ReadTimeout
  • TDSRestConnection bietet auch ConnectionTimeOut
  • Windows-Unterstützung für HTTP / 2 hinzugefügt
  • Neue Eigenschaft THttpClient.ProtocolVersion
  • Neue Eigenschaft TNetHttpClient.ProtocolVersion
  • Neue TBase64URLEncoding-Codierung und neue Eigenschaft TNetEncoding.Base64URL
  • In der gesamten RTL für alle Plattformen von "gethostbyname" zu "getaddrinfo" gewechselt
  • Neues TCertificate.PublicKey, das den Modulus des öffentlichen Schlüssels enthält
  • ContentType hat jetzt den Typ String, nicht Enum. So können Sie einen beliebigen String für einen Inhaltstyp verwenden. Zudem neuer CustomContentType in RestRequest
  • Unterstützung für TLS 1.3 in TNetHTTPClient für Windows
  • Mehrere Verbesserungen für TSocket
  • Die neue Komponente TRESTRequestDataSetAdapter vereinfacht das Hochladen von TDataSet-Daten (z. B. TFDMemTable) zu einem Server über JSON. Sie dient als Begleitung für die TRESTResponseDataSetAdapter REST-Komponente auf der Server-Seite.
  • Die Komponente TRestClient stellt die Eigenschaft SecureFailureReasons der zugrunde liegenden Komponente HTTPClient bereit
  • In der Unit Vcl.Styles werden die TCustomStyle-Klassen FCustomElements und FSource jetzt im protected-Abschnitt deklariert.

Internet-Server-Technologien

WebBroker

ISAPI-DLL-Threads haben eine konfigurierbare StackSize mit der Variable Web.Win.ISAPIThreadPool.StackSize. Deutlich verbesserte WebBroker-Leistung beim Senden/Streamen von Dateien, die größer als 2 GB sind (MaxInt).

RAD Server

Unterstützung für Multipart/Form-Daten für RAD Server

DataSnap

DataSnap: Der REST-URI ist jetzt über einen neuen Mechanismus konfigurierbar, der auf einem TDSMethodMapEvent-Ereignis basiert.

Änderungen des Installationsprogramms

Am Installationsprogramm von RAD Studio 11.0 wurden mehrere erwähnenswerte Änderungen vorgenommen:

  • Das minimale Installationsprogramm wurde aktualisiert, damit es auf Bildschirmen mit High DPI korrekt angezeigt wird. Die Optionsfelder und Kontrollkästchen sollen korrekt angezeigt werden.
  • Das minimale Installationsprogramm bietet eine Option zur Sprachauswahl, anstatt sich wie bisher auf die Erkennung durch das Betriebssystem zu stützen. Dies ermöglicht allen Benutzern einer deutschen, französischen oder japanischen Version von Windows, die die englische Version von RAD Studio installieren möchten, ein reibungsloseres Arbeiten.
  • Die neue Ordnerauswahl "Katalog-Repository" für Installationsdateien ermöglicht es, die relativ großen Installationsdateien an einem anderen Ort als dem öffentlichen Dokumentenordner zu speichern.
  • Die Installation verläuft nun schneller. Das Herunterladen komplexer Features erfolgt, indem mehrere Dateien parallel und nicht nacheinander heruntergeladen werden. Auch das Herunterladen und das Extrahieren der komprimierten Dateien erfolgt parallel, während die Installation der Features nacheinander erfolgt. Die während der Installation angezeigten Informationen wurden entsprechend geändert, und die seltsamen, in 10.4.x angezeigten "Featurenamen" wurden entfernt und durch die Nummer der Download-Datei für jedes Feature ersetzt.


Siehe auch