Anzeigen: Delphi C++
Anzeigeeinstellungen

Neuerungen

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Hauptseite

Inhaltsverzeichnis

RAD Studio 10.3 Rio enthält die folgenden neuen und verbesserten Features.

Delphi-Sprache

Deklaration von Inline-Variablen

Die Deklaration lokaler Variablen in der Delphi-Sprache in 10.3 wurde erheblich geändert und bietet nun viel größere Flexibilität. Entsprechend den Pascal-Sprachregeln mussten bis jetzt alle Variablen- und Konstantendeklarationen in einen "var"- oder "const"-Block vor dem Beginn eines Funktions-, Prozeduren- oder Methodencodes erfolgen.

Mit der neuen Syntax für die Deklaration von Inline-Variablen können Sie die Variable oder Konstante direkt im Code deklarieren und ihr in derselben Anweisung einen Wert zuweisen. Zudem ist es möglich, Variablen in einem verschachtelten Codeblock mit auf diesen Codeblock beschränkter Sichtbarkeit und Lebensdauer zu deklarieren.

Typableitung

Inline deklarierte Variablen können auch die Typableitung nutzen. Für eine Inline-Variable mit einer direkten Zuweisung muss kein Typ angegeben werden, da er vom zugewiesenen Wert abgeleitet werden kann.

Herkömmliche Arbeitsspeicher-Referenzzählung im Linux-Compiler

Der 64-Bit-Compiler für Linux in 10.3 wurde "zurückgesetzt", damit er die Nicht-ARC-Implementierung der Objektspeicherverwaltung verwendet, was exakt dem Windows-Verhalten entspricht.

Die NEXTGEN-Definition wurde für den Linux-64-Bit-Compiler deaktiviert.

AnsiString/AnsiChar unter Linux

In RAD Studio 10.3 Rio wurde die Unterstützung für die Datentypen AnsiChar/AnsiString im älterer Stil unter Linux hinzugefügt. Verwenden Sie diese Typen mit Bedacht, da Unicode auch unter Linux der bevorzugte String-Typ ist und Ansi-Codeseiten unter Windows und Linux nicht übereinstimmen. Dies kann jedoch die Kompatibilität mit vorhandenem Low-Level-Code zur Verwaltung von Strings erhöhen.

C++

Clang-Upgrade: C++17-Unterstützung

C++Builder und RAD Studio 10.3 enthalten einen aktualisierten durch Clang erweiterten Compiler mit C++17-Unterstützung für 32-Bit-Windows. Aufgrund unseres fortschrittlichen Compiler-Upgrades können Sie nun die neuesten C++-Sprach-Features verwenden, um leistungsstärkeren und kompakteren Code zu schreiben, weitere Compiler-Optimierungen zum Erzeugen schnelleren Codes nutzen und mehr C++-Bibliotheken von Drittanbietern einsetzen, um leistungsfähigere Anwendungen zu erzeugen.

  • Durch Clang erweiterter C++17-Compiler und Toolkette für Win32 (bcc32x und bcc32c)
  • Mit dem aktualisierten, durch Clang erweiterten Compiler für Win32 erzeugte C++-Laufzeitbibliothek (RTL), einschließlich der Edition 2018 der Dinkumware STL
  • Unterstützt auch C++14
  • Verbesserte Programmierhilfe

Clang ist die Vorgabe

In früheren Releases wurde für neue C++-Projekte standardmäßig der klassische Compiler für die Win32-Plattform verwendet. Dies wurde geändert und der Standard-Compiler ist jetzt der durch Clang erweiterte Compiler.

Abwärtskompatibilität

Der Win32-Compiler verwendet für alle Projekte standardmäßig C++17. Sie können aber auf der Seite "Projektoptionen" > "C++-Compiler" einen früheren Sprachstandard, z. B. C++14, C++11 und sogar C++98/03, auswählen.

Neuerungen in C++17

C++17 enthält einige großartige neue Features, durch die Ihre Produktivität und Ihr Code verbessert werden.

Eine gute Übersicht über die Neuerungen in C++17 finden Sie in den folgenden Artikeln und Blogbeiträgen:

Im Rahmen des Upgrades von C++11 auf C++17 wurde RAD Studio 10.3 Rio auch die Unterstützung für C++14 hinzugefügt.

Neue STL/Dinkumware-Version

C++Builder verwendet die Dinkumware STL zur Bereitstellung der C++-Standardbibliothek für Windows. C++Builder 10.3 verwendet eine aktualisierte 2018-Version der Dinkumware STL für Win32 und Win64.

Verbesserte mathematische Leistung für Win64

Viele mathematische C++-Funktionen erhielten eine neue Implementierung. Durchschnittlich sind diese Methoden ungefähr zweimal schneller als in der Vorgängerversion.

Verbesserte Programmierhilfe für C++

Die Programmierhilfe für C++-Win32, die den aktualisierten, durch Clang erweiterten Compiler verwendet, ist deutlich schneller und liefert bessere Ergebnisse als die frühere C++-Programmierhilfe.  

Die Programmierhilfe für diesen Compiler arbeitet jetzt asynchron. Die Eingabe wird nicht unterbrochen, während die Programmierhilfe berechnet wird. Sie verwendet den Sprachserverprotokoll-Server cquery.

Fehlermarkierung für C++

Die Fehlermarkierung, die im Editor Fehler im Code rot unterstrichen anzeigt, ist jetzt auch für C++ verfügbar. Dazu wird das Sprachserverprotokoll und cquery verwendet. Die Fehlermarkierung ist verfügbar, wenn der neue durch Clang erweiterte Compiler für Win32 verwendet wird.

Debuggen optimierter Builds

In der Vergangenheit wurden durch Aktivieren der Debug-Info Compiler-Optimierungen deaktiviert. Im aktualisierten Win32-Compiler von 10.3 wird das Debuggen optimierter Builds jetzt unterstützt. Bitte beachten Sie, dass in optimierten Builds Ausdrücke und Variablen für den Debugger häufig nicht verfügbar sind, da sie "herausoptimiert" wurden.

Neue Bibliotheken in GetIt

Eine Reihe weit verbreiteter C++-Bibliotheken sind über GetIt verfügbar.

Delphi und C++

ABI-Kompatibilität von C++/Delphi

In früheren Releases gab es geringfügige Plattformunterschiede bei der Übergabe von ABI-basierten Methoden, insbesondere bei Records in der Größe zwischen 4 und 8 Byte bei der Übergabe per Wert oder per Referenz. Diese Unterschiede sind nun behoben und Probleme, die bei der Migration von C++-Win32-Code nach Win64 bei der Interaktion mit Delphi auftraten, insbesondere bei der Verwendung von Ereignisbehandlungsroutinen, sollten nun behoben sein. Ein klassisches Beispiel ist eine Ereignisbehandlungsroutine, die einen TPoint-Parameter übernimmt: In Win32 ergaben sich korrekte Werte für die X- und Y-Koordinaten des Punkts, aber in Win64 lieferte das Auslesen von X und Y "Schrottwerte". Dies tritt nicht mehr auf.

Die meisten Änderungen betreffen fastcall, aber RAD Studio 10.3 Rio enthält auch Änderungen der Unterstützung für cdecl und andere Aufrufkonventionen, um eine vollständige Kompatibilität, auch auf mobilen Plattformen, zu erzielen.

IDE

Das Erscheinungsbild des Hauptfensters und einiger wichtiger Dialogfelder von RAD Studio 10.3 Rio wurde verbessert und bietet nun einen moderneren Stil mit Schwerpunkt auf Lesbarkeit und Klarheit.

Zwei neue Designs

RAD Studio 10.3 enthält ein neues helles Design und eine Überarbeitung des dunklen Designs mit dem Fokus auf Benutzerfreundlichkeit auch bei längerem Arbeiten.

Projekt- und IDE-Optionen

Die Dialogfelder für IDE- und Projektoptionen erhielten ein klares Erscheinungsbild durch Steuerelemente, die regelmäßig mit gleichen Abständen ausgerichtet sind. Der graue Hintergrund wurde durch einen weißen ersetzt, wodurch den Fenstern insgesamt ein moderneres Aussehen verliehen wurde, jede Einstellungsseite verfügt über einen Titel und Optionshierarchien werden in voller Breite angezeigt.

Die Optionshierarchien wurden um neue Kategorien erweitert und einige Optionen wurden in neue Kategorien verschoben. Beispielsweise befinden sich im Dialogfeld "Projektoptionen" die Programmsymbole oder -bilder nicht mehr auf der Seite "Anwendung", sondern auf unter Anwendung > Symbole.

Beide Optionsdialogfelder können mithilfe eines neuen Suchfeldes in der Titelleiste durchsucht werden.

IDE-Hauptfenster

Das Hauptfenster von RAD Studio 10.3 hat ein klareres Erscheinungsbild erhalten und ist nun lesbarer und besser ausgerichtet. Zu den Änderungen zählen:

  • Überflüssige Rahmen und Linien wurden entfernt. In der UI werden Abschnitte anhand von Hintergrundfarben, nicht von Rahmenlinien unterschieden.
  • Verbesserungen bei Lesbarkeit und Klick-Zielen. Editor-Registerkarten sind größer und die Schrift ist weiß auf einem dunklen Hintergrund, wodurch das Lesen und Klicken erleichtert wird, und andockbare Fenster verfügen über eine größere Titelleiste.
  • Änderungen des Fokus sind in der IDE deutlich erkennbar. Der aktuelle Bereich im Fokus, ob es sich um eine Editor-Registerkarte oder ein angedocktes Fenster handelt, wird mit einem Hintergrund in kräftigem Blau angezeigt. Dadurch wird sofort klar, wo sich der Tastaturfokus befindet.
  • Einige Fenster wurden umbenannt, z. B. die Projektverwaltung, die jetzt Projekte heißt, und die Tool-Palette, die jetzt nur noch Palette heißt.
  • IDE Insight zur IDE-weiten Suche befindet sich jetzt in der Titelleiste der IDE.

Dialogfeld "Objektgalerie"

Das Dialogfeld "Objektgalerie" enthält Elemente mit Namen und Beschreibung in einer bildlauffähigen Liste. Zur Erleichterung der Suche nach Elementen befinden sich bestimmte Elemente nun in mehreren Kategorien (beispielsweise befindet sich eine dynamische Bibliothek jetzt unter "Windows" und "Geräteübergreifend") und die Suche wurde in die Titelleiste verschoben.

Dialogfeld "Compilieren"

Im Dialogfeld "Compilieren" wird jetzt die Anzahl der Hinweise, Warnungen und Fehler angezeigt. Aufgrund eines neues Layouts ist das Dialogfeld übersichtlicher.

Dialogfeld "GetIt-Package-Manager"

Das Dialogfeld "GetIt-Package-Manager" enthält nun Elemente in einer bildlauffähigen Liste anstelle von Seiten. Es hat ein klareres Erscheinungsbild und die Suche wurde in die Titelleiste verschoben.

Weitere Verbesserungen der IDE

IDE-Optimierungen für das Laden von Formularen mit LiveBindings beim Entwurf

In RAD Studio 10.3 erfolgt das Laden von Formularen mit LiveBindings oder vielen anderen Steuerelementen jetzt erheblich schneller. Die Ladezeit wurde von dreißig Sekunden (für sehr große Formulare) auf nur wenige Sekunden verringert.

Verbesserungen bei Fix Pack

RAD Studio 10.3 Rio enthält einige Korrekturen und Verbesserungen von Andreas Hausladen für das "IDE Fix Pack". Die meisten übernommenen Korrekturen beziehen sich auf die IDE und umfassen Folgendes:

  • Durch Virtual TreeView ausgelöster, hochauflösender Timer
  • Optimierungen von FindHInstance
  • Debugger verwendet CREATE_DEFAULT_ERROR_MODE beim Erstellen des Prozesses
  • Optimierungen von IndexOf und Name bei TStringList

Architektur und Tools für VCL Integrated Translation

Obwohl Architektur und Tools für VCL Integrated Translation noch in 10.3 enthalten sind, wurden keine weiteren Verbesserungen an diesen Tools vorgenommen und sie werden in einem der zukünftigen Releases entfernt. Sie sollten die Abhängigkeit von diesen Tools verringern und zu einem anderen Übersetzungstool migrieren.

VCL

Unterstützung für hochauflösende Bilderlisten

Mit dem neuen hochauflösenden VCL-Steuerelement ImageList in 10.3 können Entwickler, die neue VCL-Windows-Anwendungen erstellen oder vorhandene Apps für hochauflösende Displays aktualisieren, pixelgenaue Bilder mit Mehrfachauflösung für alle Steuerelemente sowie benutzerdefinierte Zeichenoperationen, für die skalierte Bilder für Monitore mit Mehrfachauflösung erforderlich sind, vollständig unterstützen. Sie erreichen dies durch Verwendung der Komponente TImageCollection zusammen mit der Komponente TVirtualImageList.

Diese verbundenen Komponenten trennen das Konzept einer Sammlung von Bildern (in der jedes logische Bild mehrere Auflösungen haben kann) von einer Liste mit Bildern in einer einzigen bestimmten Größe, die für ein Steuerelement verwendet wird.

TVirtualImageList ist vollständig kompatibel mit herkömmlichen Bilderlisten und ein 1:1-Ersatz dafür, einschließlich der Bereitstellung eines HIMAGELIST-Handle. Die Komponente kann von VCL-Steuerelementen und von Code eingesetzt werden, der Bilderlisten über die Windows-API aufruft.

TImageCollection unterstützt Bilder mit Alphakanälen, einschließlich PNGs. Sie können auch farbcodierte, transparente Bitmaps des alten Stils laden und es sind Migrationstools vorhanden, die die Konvertierung herkömmlicher TImageLists in die neue Bildersammlung und die virtuelle Bilderliste unterstützen.

Unterstützung für Per Monitor V2

RAD Studio 10.3 enthält die Unterstützung von Per Monitor V2 für die VCL. Damit können VCL-Anwendungen sämtliche Windows-Skalierungen korrekt umsetzen und auf Änderungen der DPI-Skalierung bei unterschiedlichen Bildschirmen reagieren. Um diese für Ihre Anwendung zu aktivieren, rufen Sie Projekt > Optionen > Anwendung > Manifest auf und wählen im Abschnitt DPI-Unterstützung die Option Per Monitor V2 aus.

Features von Win 10 – Erweiterte Unterstützung für den Store/für APIs

In 10.3 wurde die Anzahl der Windows-APIs erhöht, die VCL- und FireMonkey-Entwickler in ihren Anwendungen einsetzen können. Dazu zählen eine Reihe von wichtigen WinRT-APIs und neueste Windows 10-APIs, einschließlich einsatzbereite Komponenten für den In-App-Kauf und Tests im Windows 10 Store.

Updates der WinRT-API

RAD Studio 10.3 enthält Updates für Header-Deklarationen der WinRT-API in Object Pascal, einschließlich der Unterstützung für viele APIs, die seit dem ersten Release von Windows 10 hinzugefügt wurden. Diese APIs verwenden dasselbe Deklarationsmodell, das in RAD Studio 10 Seattle eingeführt wurde, und befinden sich in den folgenden Units (im Quellordner "System Windows WinRT"):

WinAPI.ApplicationModel.Background.pas Winapi.ApplicationModel.Contacts.pas WinAPI.ApplicationModel.Core.pas WinAPI.ApplicationModel.DataTransfer.pas WinAPI.ApplicationModel.pas Winapi.CommonNames.pas WinAPI.CommonTypes.pas WinAPI.DataRT.pas Winapi.Devices.AllJoyn.pas Winapi.Devices.Bluetooth.Advertisement.pas WinAPI.Devices.Bluetooth.pas WinAPI.Devices.Enumeration.pas Winapi.Devices.Geolocation.pas Winapi.Devices.Midi.pas WinAPI.Devices.pas Winapi.Devices.PointOfService.pas Winapi.Devices.Scanners.pas Winapi.Devices.Sensors.pas Winapi.Devices.Sms.pas WinAPI.Foundation.Collections.pas WinAPI.Foundation.pas WinAPI.Foundation.Types.pas WinAPI.Gaming.pas WinAPI.Globalization.pas WinAPI.GraphicsRT.pas WinAPI.Management.pas Winapi.Media.Devices.pas Winapi.Media.MediaProperties.pas WinAPI.Media.pas WinAPI.Networking.Connectivity.pas WinAPI.Networking.NetworkOperators.pas WinAPI.Networking.pas WinAPI.Networking.Proximity.pas Winapi.Networking.PushNotifications.pas WinAPI.Networking.Sockets.pas WinAPI.Networking.Vpn.pas Winapi.Perception.pas WinAPI.Security.Credentials.pas WinAPI.Security.Cryptography.pas WinAPI.Security.pas Winapi.ServicesRT.pas Winapi.ServicesRT.Store.pas WinAPI.Storage.pas WinAPI.Storage.Streams.pas WinAPI.SystemRT.pas WinAPI.UI.Composition.pas WinAPI.UI.Core.pas WinAPI.UI.Input.Inking.pas WinAPI.UI.Input.pas WinAPI.UI.Notifications.pas WinAPI.UI.pas WinAPI.UI.Text.pas WinAPI.UI.ViewManagement.pas WinAPI.UI.WebUI.pas WinAPI.UI.Xaml.pas WinAPI.WebRT.pas

Update der Windows-API

Dieses Update der Windows-API betrifft verschiedene Bereiche. Einer bezieht sich auf die neuen APIs für High-DPI, einschließlich DPI-Prozess- und Thread-Unterstützung, DPI-Einstellungen für Monitore und Fenster, High-DPI-Designs und vieles mehr.

Ein weiterer Bereich bezieht sich auf die Unterstützung der neuen "Stifteingabe" sowie WM_POINTER_xxx-Botschaften und zugehörigen APIs und Datenstrukturen.

In 10.3 wurden zudem einige doppelte Typdeklarationen neu angeordnet. Beispielsweise befindet sich PUint32 nicht in System.pas. Darüber hinaus wurden bestimmte Windows-Handle-Typen verschoben und erhielten eine geringfügig geänderte Deklaration.

TWindowsStore

Mit der Komponente TWindowsStore können Sie Windows-Anwendungen mit dem Windows Store verbinden und Features, wie Abrufen einer Liste von dem Benutzer gehörender Apps, verfügbarer Add-ons, gekaufter Add-ons und Verarbeiten des Testmodus, verwenden.

Die Komponente TWindowsStore wird nur für Windows-Plattformen unterstützt und RAD Studio 10.3 Rio enthält eine VCL-Version und eine FireMonkey-Version.

TWindowsStore ist ein Komponenten-Wrapper für TWindowsStoreCore.

Weitere VCL-Verbesserungen

  • Unterstützung für farbige Schriftarten in TDirect2DCanvas
  • Darstellung von Botschaften und APIs für wm_pointer
  • Freigeben von Contract-Erweiterungen

FireMonkey

Android API Level 26 oder höher

RAD Studio 10.3 Rio enthält die Unterstützung für die Entwicklung mit Android API Version 26, wie von Google für neue Play Store-Anwendungen ab August 2018 und für Updates ab November 2018 gefordert. Zu den Änderungen zählen:

  • Das Manifest enthält neue Informationen (mit dem korrekten API-Level).
  • Die Standardkonfiguration verwendet eine neue Version des SDK/NDK.

Sie müssen das SDK mit einer neuen Plattformbibliothek aktualisieren, ansonsten werden Ihre Android-Apps nicht erzeugt.

Neues Android-Berechtigungsmodell

In den neuen Versionen der Android API wurde der Mechanismus zum Anfordern von Berechtigungen geändert. Der Benutzer kann für die Aktivität requestPermissions aufrufen und die Callback-Funktion löst eine RTL-Abonnementbotschaft aus.

Android-Z-Reihenfolge

Die Android-Z-Reihenfolge in 10.3 unterstützt die Verwendung von mit Stilen versehenen FireMonkey-Steuerelementen, z. B. Schaltflächen, Beschriftungen und Kontrollkästchen, mit nativ gerenderten Steuerelementen wie den Browser- und Landkartensteuerelementen auf demselben Formular, ohne dass das native Steuerelement das mit Stilen versehene Steuerelemente verdeckt.

Native Android-Steuerelemente

10.3 bietet eine Reihe neuer Möglichkeiten, um die Verwendung nativer Steuerelemente zusammen mit FireMonkey-Steuerelementen mit Stilen auf demselben Android-Formular zu unterstützen.

Eine Änderung betrifft die Verwendung des Materialdesigns für native Android-Steuerelemente in FireMonkey-Anwendungen. Native Steuerelemente wie TWebBrowser, TMapView und andere neue native Steuerelemente verwenden das Materialdesign auf Geräten mit Android Version 5.0 oder höher.

Die folgende Liste enthält alle Steuerelemente, die derzeit eine native Darstellung unterstützen:

  • TCalendar
  • TEdit
  • TSwitch

Unterstützung für iOS 12

RAD Studio 10.3 enthält die Unterstützung von iOS 12 für Zielgeräte und das Erzeugen von App Store- und Enterprise-Anwendungen.

Unterstützung für Mojave

Mit RAD Studio 10.3 können 32-Bit-Anwendungen erzeugt werden, die auf macOS 10.14 Mojave ausgeführt werden. Delphi unterstützt das SDK 10.14.

Weitere Verbesserungen für FireMonkey

  • Unterstützung von Unicode Emoji

FireDAC und Datenbank

Verbesserungen für MySQL

  • Unterstützung für MySQL v 8.0
  • Unterstützung für MariaDB 10.3

Verbesserungen für SQL Server

  • Unterstützung für SQL Server 2017

Verbesserungen für PostgreSQL

  • Unterstützung für PostgreSQL v 10, einschließlich der folgenden Neuerungen:
    • Identity-Spalten
    • Macaddr8
    • Passwortverschlüsselung
  • Neue Verbindungsparameter "GUIDEndian=Little|Big"

Verbesserungen für Firebird

  • Unterstützung für Firebird v 3.0, einschließlich der folgenden Neuerungen:
    • Lokales Verbindungsprotokoll
    • FB$OUT-Package
    • isc_database_info()-Informationselemente
    • Statistikfunktionen in der gbak-Ausgabe
    • Unterstützung für eine Anweisungslänge von > 64 KB
  • Neue TFDFBOnlineValidate-Komponente
  • Neue Verbindungsparameter "GUIDEndian=Little|Big"

Verbesserungen für MongoDB

  • Neuer Verbindungsparameter "TimeZone=Local|UTC"

Verbesserungen für InterBase

  • Unterstützung für InterBase v 2017, einschließlich der folgenden Neuerungen:
    • TRUNCATE-Befehl
    • Unterstützung für TRUNCATE in Änderungsansichten
    • Transaktionswartezeit
  • Neue Verbindungsparameter "GUIDEndian=Little|Big"

Verbesserungen für SQLite

  • Unterstützung für 3.23.1
  • Verbesserte Unterstützung der Linux-Plattform, einschließlich der folgenden Neuerungen:
    • Unterstützung der Verschlüsselung
    • Unterstützung der Sortierung

Verbesserungen für SQL Anywhere

  • Neue Eigenschaft TFDPhysASADriverLink.ToolHome
  • Unterstützung für TFDEventAlerter hinzugefügt

Sonstige FireDAC-Änderungen

  • TFDBatchMoveJSONWriter hinzugefügt
  • TFDBatchMove und verwandte Komponenten optimiert

Verbesserungen für Datenbanken

  • Neue Eigenschaft TClientDataSet.IncludeBlobsInDelta

Verbesserungen für DataSnap

  • Neue Eigenschaft TDSRestConnection.SecureProtocols
  • DataSnap REST legt jetzt explizit "Content-Type=application/json" fest.

Verbesserungen für REST

  • Verbesserte Unterstützung verschiedener MIME-Typen
  • Eigenschaft TRESTClient.OnNeedClientCert hinzugefügt
  • Eigenschaft TRESTClient.OnAuthEvent hinzugefügt
  • Eigenschaft TRESTClient.RedirectsWithGET hinzugefügt
  • Eigenschaft TRESTClient.SecurityProtocols hinzugefügt
  • Indy durch THTTPClient ersetzt
  • Optionen TRESTRequestParameterOption.poFlatArray, poPHPArray, poListArray hinzugefügt
  • Methode TRESTRequestParameter.AddValue hinzugefügt
  • Methode TRESTRequestParameter.SetStream hinzugefügt
  • Eigenschaft TRESTRequestParameter.Stream hinzugefügt
  • Eigenschaft TRESTRequestParameter.StreamOwner hinzugefügt
  • Eigenschaft TRESTRequestParameter.Bytes hinzugefügt
  • TRESTRequestParameterList.AddItem hinzugefügt
  • Verhalten von TRESTRequestParameterKind.pkGETorPOST geändert
  • Wert TRESTRequestParameterKind.pkQUERY hinzugefügt
  • TRESTRequestParameterList.AddBody-Methoden als Ersatz für die Klasse TBodyParams hinzugefügt
  • Parameter AOwnsObject: TRESTObjectOwnership für TCustomRESTRequest.TBody.Add-Methoden hinzugefügt
  • Argument AContentType: TRESTContentType für TCustomRESTRequest.DoPrepareQueryString hinzugefügt
  • Argumente AContentType: TRESTContentType, ABodyStreamOwner: Boolean für TCustomRESTRequest.DoPrepareRequestBody hinzugefügt
  • THTTPClient auf Windows-Plattform optimiert
  • TMultipartFormData.AddStream und AddBytes hinzugefügt
  • Überladene Methode TNetHTTPClient.Put/THTTPClient.Put für TMultipartFormData, FileName, TStrings hinzugefügt
  • Klasse TAcceptValueList für die Behandlung von Werten, die HTTP Accept-Xxxx-Header berücksichtigen, hinzugefügt
  • Klasse TMimeType für die Behandlung von MIMETypen hinzugefügt

Verbesserungen für die Cloud

  • Verbesserte Unterstützung für den Azure-Speicheremulator
  • Aktualisierte AWS S3-Unterstützung zur Abdeckung kürzlich hinzugefügter Regionen
  • Eigenschaft TAmazonConnectionInfo.Region hinzugefügt
  • Parameter "BucketRegion: TAmazonRegion = amzrNotSpecified" für die meisten Bucket-/objektbezogenen TAmazonStorageService-Methoden hinzugefügt
  • Allgemeine Leistung der Cloud-Unterstützung verbessert

RAD Server

Leistungsverbesserungen

RAD Studio 10.3 enthält die folgenden Leistungsverbesserungen für RAD Server:

Neue EndPoint-Attribute für auf Content-Type und Accept basierte Zuordnungen

Zur besseren Unterstützung der Ressourcenzuordnung, die nicht nur vom URL, sondern auch von den HTTP-Anforderungs-Headern Accept und Content-Type HTTP abhängen. Das bedeutet, dass zwei verschiedene Methoden demselben URL und HTTP-Verb zugeordnet werden können, aber trotzdem je nach Anforderung verschiedene Typen von Daten zurückgegeben werden.

HTTP-Verb für die Zuordnung benutzerdefinierter Methodennamen

In früheren Versionen von RAD Server hat das System Zuordnungen für HTTP-Verben (GET, POST etc.) zu benutzerdefinierte Methodennamen generiert. Dies bleibt der Standard, aber Sie können mit dem neuen Attribut EndpointMethod ein HTTP-Verb auch einer Methode mit einem benutzerdefinierten Namen zuordnen.

Delegieren der Verarbeitung einer Anforderung an eine benutzerdefinierte Klasse oder Komponente

Der Ressourcen-API von RAD Server wurde die Möglichkeit hinzugefügt, Anforderungsverarbeitungen an Delphi-Felder des Ressourcenmoduls zu delegieren, die Publisher-Klassen/-Komponenten des benutzerdefinierten Endpunkts sind.

Hilfskomponenten für die JSON-Verarbeitung

Aufgrund der neuen Möglichkeit, die Verarbeitung an eine Komponente zu delegieren, enthält RAD Studio 10.3 neue Komponenten zur Vereinfachung der JSON-Verarbeitung, insbesondere bei Datenbankabfragen. Die Komponenten können einer Klasse hinzugefügt werden, die einer RAD Server-Ressource (oder einem Datenmodul) zugeordnet ist, und die HTTP-Methoden können ohne Schreiben von Code diesen Ressourcen zugeordnet werden.

Weitere Verbesserungen für RAD Server

  • Die Leistung von RAD Server wurde durch eine Verzehnfachung des Durchsatzes bei einfachen Operationen deutlich verbessert (ein Teil der zugehörigen Korrekturen wurde bereits als Patch für 10.2.3 ausgeliefert).

RTL

Die Leistung der Delphi-RTL in 10.3 wurde erheblich verbessert und die Kompatibilität mit den Standards für JSON und HTTP erweitert.

Erweiterungsstrategie für Datenstrukturen

Einige Datenstrukturen (TStringList, TList, TList <T>, TQueue<T>, TStack<T>) verfügen nun im Vergleich zu der x2-Strategie der Vergangenheit über eine flexible Erweiterungsstrategie für den Fall, dass die Struktur voll ist und erweitert werden muss. Die Erweiterungsstrategie kann ersetzt werden. Die neue Erweiterungsstrategie ist in einer gemeinsam genutzten globalen Funktion, die in SysUtils.pas deklariert ist, implementiert:

function GrowCollection(OldCapacity, NewCount: Integer): Integer;

Zudem können Sie die Implementierung anpassen, indem Sie eine neue kompatible Funktion schreiben und die globale Prozedur SetGrowCollectionFunc aufrufen.

Wenn Sie eine benutzerdefinierte "Erweiterungssammlungs-Funktion" in ein Laufzeit-Package installieren, müssen Sie sie beim Beenden auf nil setzen, ansonsten könnte die Laufzeit versuchen, die nicht vorhandene Funktion aufzurufen, nachdem die Packages entladen wurden.

Änderungen für TStringBuilder

An dieser Klasse wurden mehrere Änderungen zur Leistungsverbesserung vorgenommen, einschließlich einer ähnlichen Änderung für die Erweiterungsstrategie des Arbeitsspeichers, des Entfernens von redundantem Code und einer Gesamtbereinigung der Implementierung.

Der TStringBuilder-Enumerator wurde optimiert.

Der Methode TStringBuilder.ToString wurde ein weiterer Parameter hinzugefügt. Die Signatur lautet ToString (UpdateCapacity: Boolean). ToString(True) liefert eine bessere Leistung, wenn keine weiteren Änderungen für TStringBuilder erwartet werden, da die Menge der zu kopierenden Daten reduziert wird.

Verbesserungen für JSON

Es wurden erhebliche Verbesserungen bei Verarbeitung und Analyse von JSON vorgenommen, um größere Fehlerfreiheit und bessere Leistung zu erzielen.

Verbesserungen für Listen

  • TList und TDictionary erhielten neue "public"-Eigenschaften, damit nach der Initialisierung auf die Definition ihrer Vergleichsoperationen zum Sortieren zugegriffen werden kann.
  • Methode TryAdd zu TDictionary<TKey,TValue> hinzugefügt
  • ExtractAt(Index: Integer): T zu TObjectList<T> hinzugefügt
  • Verbesserte Leistung von TList<T>.IndexOf
  • Verbesserte Gesamtleistung von TList<T>, TQueue<T>, TStack<T> beim Hinzufügen von Elementen zu den Listen. Das standardmäßige TList<T>.Add sollte um ca. 30 % schneller sein.
  • Optimierte Enumeratoren für TList, TStrings, TComponent, TCollection, TList<>. Leere "for in"-Schleifen sind jetzt 2,5- bis 4-mal schneller.
  • Als Teil der Enumeratortypen für Sammlungen definiert RAD Studio den Enumeratorstatus explizit, wenn die Iteration abgeschlossen ist: "Der Enumeratorstatus ist nicht gültig, nachdem MoveNext False zurückgegeben hat und der Enumerator freigegeben oder neu erstellt werden muss, und es sollte nicht mehr darauf zugegriffen werden".

Weitere Änderungen für die RTL

  • TStringHelper.Split liefert jetzt die gleichen Ergebnisse wie die globale Funktion aus StrUtils.
  • zlib wurde auf 1.2.8 mit weiteren Korrekturen aktualisiert (und wird jetzt mit dem C++-Compiler für 64 Bit von RAD Studio compiliert).
  • PCRE wurde auf 8.42 aktualisiert und enthält unter Windows die Unterstützung für UTF-16 (und wird jetzt mit dem C++-Compiler von RAD Studio compiliert).
  • Unicode-Tabelle (Unit System.Character) unterstützt Unicode v11.0.
  • Die Methode TStringHelper.Split verfügt über ein geändertes optionales Verhalten basierend auf der neuen Option TStringSplitOptions.ExcludeLastEmpty.
  • Die Reihenfolge der Prozeduren und Funktionen in der Unit SysUtils wurde geändert, um das Inlining besser zu unterstützen.
  • Float32- und Float64-Aliase wurden der Unit System hinzugefügt.

Senden langer Strings bei App-Tethering

In der aktuellen Implementierung sind SendString-/AsString-Operationen in der Klasse TTetheringAppProfile (wird für App-Tethering verwendet) auf eine Länge von ca. 1.400 Zeichen begrenzt. RAD Studio 10.3 enthält die folgenden Änderungen und Ergänzungen, die lange Strings zulassen und dabei die Kompatibilität beibehalten:

  • Die neue Methode für TTetheringAppProfile SetLongString und SendLongString verwendet einen Stream anstelle eines Strings für die zugrunde liegende Kommunikation.
  • TResourceValue.AsString kann jetzt einen String-Wert des empfangenen Streams zurückgeben, sofern dieser verfügbar ist. Falls nicht, wird der Wert des empfangenen Strings zurückgegeben. Auf diese Weise kann es für reguläre und "lange Strings" verwendet werden.

Es wird empfohlen, dass Sie TTetheringAppProfile.SendString nur verwenden, wenn die Länge eines Strings weniger als ca. 1,3 KB beträgt, andernfalls muss TTetheringAppProfile.SendLongString verwendet werden.

Optimierung für TMemIniFile

RAD Studio 10.3 Rio enthält eine optimierte TMemIniFile-Implementierung. Das Lesen und Erstellen einer TMemIniFile ist 10- bis 25-mal schneller und belegt nur halb so viel Arbeitsspeicher. Es wurden auch weitere TMemIniFile-Operationen verbessert und sie sind um 50 bis 100 % schneller als die frühere Implementierung.

In 10.3 kann außerdem mit zwei zusätzlichen überladenen Konstruktoren eine TMemIniFile aus einem Stream geladen werden:

  • TMemIniFile.Create(Stream)
  • TMemIniFile.Create(Stream, UseLocale)

Diese Konstruktorparameter bleiben in der Klasse verfügbar und werden in neuen Eigenschaften bereitgestellt:

  • Eigenschaft Stream
  • Eigenschaft UseLocale

Siehe auch

Meine Werkzeuge
In anderen Sprachen
Frühere Versionen
Assistenz