Sie suchen eine Firma zur Unterstützung oder Betreuung Ihres Delphi Projektes?
Klicken Sie hier!
Allgemeines
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.
ABI-Kompatibilität von 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:
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 DIE
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:
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
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:
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
FireDAC und Datenbank
Verbesserungen für MySQL
Verbesserungen für SQL Server
Verbesserungen für PostgreSQL
Verbesserungen für Firebird
Verbesserungen für MongoDB
Verbesserungen für InterBase
Verbesserungen für SQLite
Verbesserungen für SQL Anywhere
Sonstige FireDAC-Änderungen
Verbesserungen für Datenbanken
Verbesserungen für DataSnap
Verbesserungen für REST
Verbesserungen für die Cloud
RAD Server
Leistungsverbesserungen
RAD Studio 10.3 enthält die folgenden Leistungsverbesserungen für RAD Server:
Weitere Verbesserungen für RAD Server
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
function GrowCollection(OldCapacity, NewCount: Integer): Integer; |
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:
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
Weitere Änderungen für die RTL
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:
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:
Diese Konstruktorparameter bleiben in der Klasse verfügbar und werden in neuen Eigenschaften bereitgestellt: