What's New
Nach oben zu Hauptseite
Nach oben zu Neuerungen in den letzten Releases
RAD Studio 13.0 Florence enthält die folgenden neuen und verbesserten Features:
Inhaltsverzeichnis
- 1 Verbesserungen der Installation und des GetIt-Package-Managers
- 2 Verbesserungen für die 64-Bit-IDE
- 3 Änderungen und Verbesserungen der IDE
- 4 Verbesserungen für IDE-Tools
- 5 Aktualisierungen des Delphi-Compilers
- 5.1 Bedingungsoperator if
- 5.2 Neue Operatoren "is not" und "not in"
- 5.3 Neue Direktive "noreturn"
- 5.4 Direktiven {$PUSHOPT} und {$POPOPT}
- 5.5 Unterstützung von langen Direktiven für die Direktive {$IFOPT}
- 5.6 Neue Einschränkungen für generische Typen
- 5.7 Funktion NameOf
- 5.8 Implizite "Self"-Parameterdeklaration in den Record-Klassenoperatoren Initialize und Finalize
- 5.9 Weitere Verbesserungen des Delphi-Compilers
- 6 Plattform "C++ Win64 Modern" auf Clang 20 aktualisiert
- 7 Verbesserungen der Delphi-RTL
- 8 VCL-Verbesserungen
- 9 FireMonkey-Aktualisierungen
- 10 Datenbank und FireDAC
- 11 Aktualisierungen der Web-Client-Bibliotheken
- 12 WebBroker-Aktualisierungen
- 13 Erweiterungen für WebStencils
- 14 Verbesserungen für RAD Server
- 15 Siehe auch
Verbesserungen der Installation und des GetIt-Package-Managers
In den folgenden Abschnitten werden Verbesserungen des Installationsprogramms und des GetIt-Package-Managers detailliert erläutert.
Aktualisierungen des Installationsprozesses
Ab RAD Studio Florence 13.0 installiert das Installationsprogramm nicht mehr das Windows SDK. Stattdessen wird überprüft, ob die aktuelle Version des SDK bereits auf dem Computer vorhanden ist. Falls nicht, wird während der Installation der Installationslink bereitgestellt. Das Herunterladen und die Installation des Windows SDK sind Voraussetzungen für RAD Studio und wir empfehlen, das SDK vor der Installation von RAD Studio 13.0 zu installieren. Weitere Einzelheiten finden Sie in den Installationshinweisen.
Für die Installation des Windows SDK sollten Sie die folgenden Optionen aktivieren:</br>
- Windows SDK for Desktop C++ x86 Apps
Dadurch wird auch automatisch Folgendes aktiviert:</br>
- Windows SDK Signing Tools for Desktop Apps
- Windows SDK for UWP Managed Apps
- Windows SDK for UWP C++ Apps
In diesem Release können die "Modellierungsfunktionen", weder die 32-Bit- noch die 64-Bit-Versionen, nicht mehr über die RAD Studio-IDE installiert werden. Daher wurden diese Funktionen aus den weiteren Installationsoptionen des Feature-Managers entfernt. Dies betrifft auch die Delphi-Formatierung.
Package-Versionierung im GetIt-Package-Manager
Ab RAD Studio Florence 13.0 kann ein einzelnes GetIt-Package in mehreren Versionen verfügbar sein und Sie können anstatt der neuesten Version eine bestimmte Version auswählen. Wenn ein Package verschiedene Versionen hat, werden sie in einem Dropdown-Menü der Schaltfläche "Installieren" angezeigt.
Die Package-Abhängigkeiten in der Projektkonfiguration können jetzt auf eine bestimmte Version eines Package verweisen, wodurch Filterregeln angewandt werden können.
Darüber hinaus verfügt die GetIt-Benutzeroberfläche nun über eine allgemeine Befehlsschaltfläche für die Hauptoperation und über ein Dropdown-Menü mit zusätzlichen Funktionen: Deinstallieren oder Aktualisieren. Außerdem ist es möglich, die Liste der installierten Packages zu exportieren. Weitere Informationen dazu finden Sie auf der Seite Fenster "GetIt-Package-Manager".
Interne Versionsnummern auf 37 vereinheitlicht
In diesem Release sind alle internen Versionsnummern in RAD Studio auf 37 vereinheitlicht, für die RTL, für Packages und mehr, einschließlich den Folgenden:
- Haupt-Registrierungseintrag:
HKEY_CURRENT_USER\SOFTWARE\Embarcadero\BDS\37.0
- Package-Version und RTL-Version
- FMX-Version: FMX.Types.FireMonkeyVersion
- PA-Server-Version
- Standardinstallationsordner des Produkts:
C:\Programme (x86)\Embarcadero\Studio\37.0
Verbesserungen für die 64-Bit-IDE
RAD Studio 13.0 enthält unsere erste 64-Bit-IDE für die Windows-64-Zielplattform mit allen Funktionen. Dies umfasst die Erweiterung und Vervollständigung der Funktionen und die Unterstützung der 64-Bit-IDE, die zuerst in RAD Studio Version 12.3 eingeführt wurde. Im Vergleich zum ersten Release der 64-Bit-IDE in 12.3 bietet die 64-Bit-IDE in 13.0 Delphi- und C++-Unterstützung für das Erzeugen und Debuggen von 64-Bit-Windows-Anwendungen.
Im Folgenden sind die Hauptaktualisierungen aufgeführt:
- Unterstützung für Quelltextvorlagen (Strg+J), einschließlich des Menüs "Umgeben"
- Unterstützung für Typbibliotheken, ActiveX und COM
- VA für die C++Builder-Integration in die 64-Bit-IDE
- Neue Debugger-Engine zum Debuggen von C++- und Delphi-Anwendungen
- Wesentliche Verbesserungen bei der Delphi-Debugger-Leistung
- Mehr dem Delphi-Stil entsprechende Zeigeradressen
- Together-basierte Funktionen wurden entfernt, einschließlich Modellierung, Audits und Metriken
Änderungen und Verbesserungen der IDE
In diesem Release wurde die RAD Studio IDE verbessert und modernisiert, indem umfangreiche und konfigurierbare Suchfunktionen in vielen IDE-Fenstern hinzugefügt wurden. Im folgenden Abschnitt finden Sie Details dazu sowie zu anderen Verbesserungen und Änderungen in der IDE.
Verbesserungen der Suchfunktionen
RAD Studio Florence 13.0 führt spezifische Suchfunktionen in verschiedenen Fenstern ein, die einen schnelleren Zugriff auf Informationen für große Projekte, Units und andere Szenarien ermöglichen. Die Suchfunktion ist in allen Fenstern, die die Suche unterstützen, einheitlich und wird mit Strg+F
aufgerufen. Mit der Taste Esc
werden die Suchergebnisse geschlossen und der Fokus wieder auf das ursprüngliche Steuerelement gesetzt.
Suchfunktionen wurden zu den folgenden Bereichen hinzugefügt:
- Strukturansicht: Es wurde eine inkrementelle Suche hinzugefügt, die sowohl Design- als auch die Quelltext-Ansichten unterstützt und Syntaxhervorhebung in den Quelltext-Suchergebnissen ermöglicht.
- Projektverwaltung: Es wurde eine inkrementelle Suche hinzugefügt, die Hochgeschwindigkeitsabfragen unterstützt und für große Projekte (mit über 20.000 Dateien) optimiert ist.
- Meldungsfenster und Ereignisprotokoll: Es wurde eine inkrementelle Suchfunktion hinzugefügt, die die Navigation in großen Datenstrukturen unterstützt.
- Objektinspektor: Es wurde ein Such-Symbol zur schnellen Navigation hinzugefügt.
- Tool-Palette: Es wurde ein Such-Symbol zur schnellen Navigation hinzugefügt.
Außerdem bietet die neue Suchfunktion, die in den Suchen für Meldungen und Ereignisse, aber auch für Projekte und für die Strukturansicht implementiert wurde, eine spezifische Suchkonfiguration, die in einem Dropdown-Menü verfügbar ist:
Ergänzungen des Meldungsprotokolls
In RAD Studio Florence 13.0 wurden die folgenden neuen Optionen unter IDE > Compilierung und Ausführung > Build-Protokoll hinzugefügt:
- Hervorhebung in Compiler-Protokollen aktivieren.
- IDE anweisen, Hinweise und Warnungen im Meldungsfenster zu gruppieren. Dies sorgt für mehr Übersichtlichkeit beim Navigieren durch eine große Anzahl von Meldungen und beschleunigt gleichzeitig den Build-Prozess.
Aktualisierungen der ToolsAPI
Das Release RAD Studio Florence 13.0 enthält die folgenden Aktualisierungen der ToolsAPI:
- Eine neue Methode zum Aktualisieren der Benutzeroberfläche für die Willkommensseite wurde hinzugefügt.</br>
INTAWelcomePageDataPluginListView370.Invalidate
- Unterstützung zum Abfangen von Mausereignissen als Klicks wurde hinzugefügt.
Weitere Einzelheiten zu den oben erwähnten Aktualisierungen finden Sie auf der Seite ToolsAPI.
Verbesserungen für Smart CodeInsight
In RAD Studio Florence 13.0 wurde der webbasierte "RAD AI Companion" eingeführt, ein Chat- und Codegenerator, der insbesondere für auf RAD Studio bezogene Inhalte trainiert wurde. Öffnen Sie in der IDE das Menü Hilfe > RAD AI Companion.
In diesem Release wurde auch die neue Schaltfläche "Verbindung testen" auf der Seite Smart CodeInsight-Optionen hinzugefügt. Jetzt können Benutzer die Konfiguration direkt testen, ohne den Chat auszuprobieren.
Weitere Verbesserungen:
- Modelle, die
“<think>”
als Teil der Antwort vor der Ausgabe der eigentlichen Information zurückgeben. In diesem Falle entfernt die IDE die "thinking"-Tags. - Die Hinweise für die Schaltflächen im Chatfenster von Smart CodeInsight zeigen nun die jeweiligen Tastenkürzel an.
Weitere IDE-Änderungen
In den folgenden Abschnitten sind weitere Aktualisierungen und Verbesserungen der IDE aufgeführt:
- Die neue IDE-Option Registerkarten wurde eingeführt, mit der Benutzer die Hintergrundfarbe des Editors für Editor-Registerkarten verwenden können.
- Eine neue IDE-Option wurde eingeführt, um das aktive IDE-Design für die Farben der Strukturhervorhebung zu verwenden. Mit dieser Option können Sie den für die Strukturhervorhebung verwendeten Farbstil auswählen.
- Die Doppelpufferung und Verbesserungen zur Beseitigung von Flackern wurden standardmäßig aktiviert. Sie können auch die neue Registrierungseinstellung (
Globals\SingleBufferingInRemoteSessions
) verwenden, um die Doppelpufferung zu überschreiben. - Das Menü "Refactor" wird abgedunkelt dargestellt, wenn keine aktive Refactoring-Option vorhanden ist, anstatt den Untereintrag "Kein Refactoring" anzuzeigen.
- Das Exception-Dialogfeld der IDE zeigt jetzt sofort die Aufruf-Stack-Abfolge und liefert Ihnen wichtige Informationen zum Verständnis des Ablaufs Ihres Codes.
- In der Strukturansicht können nun Fehlermeldungen kopiert werden.
- Das Dialogfeld Mit Prozess verbinden wurde umgestaltet und weitere Spalten, die Informationen zu Prozessen anzeigen, sowie verschiedene UI-Steuerelemente hinzugefügt.
- Die Integration der Git-Versionskontrolle wurde verbessert, indem die UI geändert wurde, um darauf hinzuweisen, dass Sie anstelle des Benutzernamens und Passworts den GitHub-Token-Namen oder Token-Schlüssel verwenden können.
- Sie müssen jetzt beim Hinzufügen eines Formulars zu einer FireMonkey-Anwendung nicht mehr zwischen einem HD- und 3D-Formular auswählen. Die Option zum Hinzufügen eines 3D-Formulars bleibt separat verfügbar.
- Die Leistensymbole im Modus "Dunkles Design" wurden verbessert und zeigen jetzt keinen weißen Rand mehr um die Bilder.
Verbesserungen für IDE-Tools
RAD Studio enthält leistungsstarke Tools für Delphi- und C++-Entwickler, die das Schreiben von Anwendungscode vereinfachen. Im folgenden Abschnitt werden die Verbesserungen und Aktualisierungen der verschiedenen IDE-Tools detailliert beschrieben.
DelphiLSP
In diesem Release wurde die Arbeit zur Verbesserung der DelphiLSP-Architektur fortgesetzt. Als Reaktion auf spezifische Delphi-Kundenanfragen und in der Zwischenzeit stellen wir die alte "Classic" Delphi CodeInsight-Engine für die Programmierhilfe wieder zur Verfügung. Sie ist in RAD Studio 13.0 als Alternative zur DelphiLSP-basierten Version in der IDE verfügbar und kann von allen genutzt werden, die dies wünschen.
Der Classic Code Insight
-Manager kann über Tools > Optionen > Editor > Sprache > Registerkarte "Code Insight" wie in der folgenden Abbildung gezeigt aktiviert werden:
Experte "Delphi Upgrade Advisor"
In RAD Studio 13.0 wurde der neue Experte "Delphi Upgrade Advisor" eingeführt, mit dem Entwickler wichtige Änderungen an der Projektkonfiguration und am Code identifizieren können, die die Compilierungszeit und die Codierungserfahrung erheblich verbessern können. Der Experte ist als separates GetIt-Package verfügbar. Nach der Installation wird ein Dropdown-Menü zur IDE hinzugefügt.
Neben konkreten Vorschlägen enthält der Experte "Delphi Upgrade Advisor" auch reFind-Skripte, mit denen Sie die uses-Anweisungen des Projekts bereinigen können.
Visual Assist für C++
In RAD Studio Florence 13.0 wurde die VA-Integration verbessert, um sie besser an die Art und Weise anzupassen, wie RAD Studio Toolketten und Projektkonfigurationen verwaltet.
VA wird nun bei jeder Änderung der Projektkonfiguration, Zielplattform oder Toolkette neu geladen. Dadurch wird sichergestellt, dass include-Pfade und Symbolauflösung genau bleiben, auch wenn Sie in derselben Projektgruppe mit mehreren Projekten arbeiten, die unterschiedliche Einstellungen verwenden.
Debugger-Aktualisierungen
In diesem Release wurde der Debugger auf LLDB Version 20 und der Clang-Compiler für die Plattform "Windows 64 Bit (Modern)" ebenfalls auf die Version 20 aktualisiert.
Im Folgenden sind weitere Verbesserungen des Debuggers aufgeführt:
Für C++:
- Verbesserung der Behandlung der Unicode-Ausgabe durch OutputDebugStringW.
- Nicht druckbare Wide-Zeichenwerte werden nun in der Debugger-Ausgabe im korrekten Format angezeigt.
- argc und argv verarbeiten nun Argumente mit Leerzeichen bei der Ausführung im Debugger.
Für Delphi:
- Bereichsabhängige Aufzählungswerte bleiben nun vollständig innerhalb ihres deklarierten Typs, wodurch Konflikte im globalen Namespace vermieden werden. Außerdem werden diese Werte nun in Debugger-Ansichten korrekt dargestellt.
- Einstellungswerte von Objekt-Membern werden jetzt während des Debuggens korrekt angezeigt.
- Namen von Klassenvariablen werden nun mit verbesserter Namensergänzung korrekt aufgelöst.
- Die Behandlung von Unicode-Variablen wurde verbessert. Der Debugger akzeptiert nun eine größere Bandbreite an Unicode-Bezeichnern.
In den IDE-Optionen können Sie zudem die Code-Hervorhebung für die Debug-Fenster aktivieren.
Ressourcen-Compiler
In diesem Release wurden einige Anpassungen an der Integration des Ressourcen-Compilers in RAD Studio vorgenommen.
Ab Florence 13.0 umfasst RAD Studio einen zusätzlichen Open-Source-Ressourcen-Compiler namens Resinator. Dieser ist jetzt Standard im Build-System. Weitere Informationen zum Resinator finden Sie unter GitHub Resinator.
Wir haben außerdem auch neue Optionen hinzugefügt, um die Auswahl verschiedener Ressourcen-Compiler zu vereinfachen, einschließlich des klassischen Ressourcen-Compilers aus dem Windows SDK.
Aktualisierungen des Delphi-Compilers
RAD Studio 13.0 enthält eine Reihe von Verbesserungen der Delphi-Sprache, von einem neuen ternären Operator bis hin zu neuen Compiler-Direktiven und vieles mehr.
Bedingungsoperator if
Im Release RAD Studio Florence 13.0 wurde ein neuer Bedingungsoperator (oder ternärer Operator) für die Sprache Object Pascal eingeführt. Das Verhalten ähnelt zwar dem Operator ?:
, der in anderen Programmiersprachen häufig vorkommt, die Syntax ist jedoch vertrauter und Pascal-orientiert und ähnelt der if-then-else-Konstruktion.
Beispiele und weitere Informationen finden Sie auf der Seite Bedingungsoperatoren (Delphi).
Neue Operatoren "is not" und "not in"
Der Compiler lässt die Operatoren "is not"
und "not in"
zu, die eine kürzere und lesbarere Version vorhandener kombinierter Operatoren bieten. Ein Beispiel finden Sie auf der Seite Ausdrücke (Delphi).
Neue Direktive "noreturn"
Die Direktive "noreturn" ist ein Attribut, das Prozeduren zugeordnet werden kann und angibt, dass der Aufruf eine Exception auslöst und keine normale Ausführung abschließt. Dadurch kann der Compiler Warnungen hinsichtlich undefinierter Ergebnisse überspringen und außerdem Optimierungen und Code-Eliminierungen durchführen. Ein Beispiel finden Sie auf der Seite Deklarationen und Anweisungen (Delphi).
Diese neue Direktive kann zum Beseitigen der W1035-Warnungen verwendet werden, wenn Exceptions ausgelöst werden, wodurch möglicherweise die Zuweisung eines korrekten Werts verhindert wird. Ein Beispiel finden Sie auf der Seite W1035 Rückgabewert der Funktion '%s' könnte undefiniert sein.
Direktiven {$PUSHOPT} und {$POPOPT}
Diese neuen Delphi-Compiler-Direktiven speichern den aktuellen Optionssatz und Warnungskonfigurationen und stellen diese wieder her.
In diesem Release wurden die folgenden Warnungen zu unausgewogenen Direktiven hinzugefügt.
Die gleiche Warnung wird am Ende der Quelltextdatei ausgegeben, wenn in einer Datei mehr $PUSHOPT als $POPOPT vorhanden sind. Nicht alle Optionen und Einstellungen sind für diese neuen Direktiven geeignet. Siehe eine Liste der geeigneten Optionen.
Unterstützung von langen Direktiven für die Direktive {$IFOPT}
Ab RAD Studio Florence 13.0 unterstützt die Direktive {$IFOPT
} jetzt lange Direktiven. Beispiel:
{$IFOPT SCOPEDENUMS ON}
Die vollständige Liste der unterstützten Direktiven finden Sie auf der Seite $IFOPT.
Neue Einschränkungen für generische Typen
Es gibt neue "interface"-, "unmanaged"- und "nonnull"-Einschränkungen für generische Typen. "Unmanaged" und "nonnull" sind teilweise Ersetzungen für die vorhandene Record-Einschränkung.
Mit diesen neuen Einschränkungen ist es auch möglich, L-Wert-Typumwandlungen für die mit einem generischen Typ deklarierte Wertetyp-Variable zuzulassen. In einer Methode einer generischen Klasse kann jetzt der Typ des Ergebnisses einer generischen Methode, die selbst einen generischen Typ zurückgibt, abhängig vom verwendeten konkreten Typ umgewandelt werden.
Beispiel:
class function TMyData<T>.OperateSubtract(const L, R: T): T;
begin
if (GetTypeKind(T) = tkInteger) and (SizeOf(T) = 1) then
Byte(Result) := Byte(L) - Byte(R) // New cast!
else if (GetTypeKind(T) = tkInteger) and (SizeOf(T) = 2) then
Word(Result) := Word(L) - Word(R) // New cast!
// ...
else if (GetTypeKind(T) = tkFloat) and (SizeOf(T) = 10) then
Extended(Result) := Extended(L) - Extended(R); // New cast!
end;
Funktion NameOf
Es gibt eine neue NameOf(Bezeichner)-Standardprozedur, die der Funktionsweise der gleichnamigen C#-Funktion entspricht. Sie können sie an einen Bezeichner übergeben und es wird die entsprechende String-Repräsentation zurückgegeben:
Memo1.Lines.Add (NameOf (Sender)); Memo1.Lines.Add (NameOf (self)); Memo1.Lines.Add (NameOf (TForm31)); Memo1.Lines.Add (NameOf (X)); Memo1.Lines.Add (NameOf (Integer));
Implizite "Self"-Parameterdeklaration in den Record-Klassenoperatoren Initialize und Finalize
Die beiden Klassenoperatoren für benutzerdefinierte verwaltete Records ermöglichen eine viel präzisere Deklarationssyntax, wobei der Parameter self
übersprungen wird (er bleibt aber implizit verfügbar). Dies bedeutet keine Änderung im Verhalten und im generierten Code, lediglich die Syntax wird vereinfacht.
Ein Beispiel finden Sie auf der Seite Benutzerdefinierte verwaltete Records.
Weitere Verbesserungen des Delphi-Compilers
Im folgenden Abschnitt sind weitere Erweiterungen und Qualitätsverbesserungen des Delphi-Compilers aufgeführt.
- Die Direktive $WEAKPACKAGEUNIT meldet jetzt einen Fehler (E2203 und E2221), wenn die Unit in den interface-Abschnitten, initialization- oder finalization-Blöcken und Klassenkonstruktoren oder -destruktoren globale Variablen enthält. </br>
- Der Compiler-Fehler "E2033" ("Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen") enthält jetzt auch die Namen der betroffenen Typen.
- Zwei neue Warnungen, W1076 und W1077, für die Datenumwandlung wurden hinzugefügt.
Plattform "C++ Win64 Modern" auf Clang 20 aktualisiert
Im Release RAD Studio Florence 13.0 wurde der Modern-Win64-C++-Compiler von Clang 15 (die in 12.x ausgelieferte Version) auf Clang, Version 20, aktualisiert. Der neue Clang-basierten Compiler unterstützt C++23. In diesem Release wurden zudem alle anderen Elemente der Modern-Win64-C++-Toolkette aktualisiert.
Dieses Release enthält wesentliche Verbesserungen, insbesondere hinsichtlich moderner C++-Standards, Kompatibilität und Stabilität. Nachfolgend sind die wichtigsten Verbesserungen dieses Releases aufgeführt:
- Upgrade der LLVM-Toolkette (v20): Für die Toolkette wurde ein Upgrade von LLVM v15 auf LLVM v20 durchgeführt. Diese Aktualisierung unterstützt die neuesten C++Standards und Compiler-Optimierungen.
- Verbesserte ASAN-Unterstützung: Die Laufzeit AddressSanitizer (ASAN) wurde nun für die Kompatibilität mit Windows 11 angepasst.
- Neue C++-Standardoption: BCC64X verwendet nun standardmäßig C++23, aber Benutzer können je nach Bedarf auch C++20 oder C++17 als Ziel auswählen.
- Versionierte gemeinsame RTL/STL-Bibliotheken: Gemeinsame Laufzeitbibliotheken (z. B. libc++.dll) erhalten nun ein Suffix mit der BDS-Versionsnummer (z. B. libc++-370.dll). Dies verhindert Laufzeitkonflikte, wenn mehrere Versionen von RAD Studio installiert sind.
- Gelöste ältere Probleme: Zahlreiche Fehler und Inkonsistenzen in LLVM v15 und früheren Toolketten-Versionen wurden in diesem Release behoben.
Verbesserungen der Delphi-RTL
In diesem Release wurde die JSON-RTL verbessert, sodass ein Feld unterdrückt werden kann, wenn es einen bestimmten Wert enthält, indem ein neues Attribut hinzugefügt wurde. Weitere Verbesserungen im Zusammenhang mit JSON sowie weitere Delphi-RTL-Aktualisierungen finden Sie weiter unten.
SmartCore AI Component Pack
In RAD Studio 13.0 wurde eine Reihe neuer KI-Kernkomponenten eingeführt, mit denen Kunden KI-Funktionen zu ihren Anwendungen hinzufügen oder mit Delphi oder C++Builder brandneue KI-fokussierte Anwendungen entwickeln können. Dies ist ein Baustein und eine Grundlage für die Zukunft: Es handelt sich um eine Kernarchitektur, auf der unsere Kunden und Drittanbieter aufbauen und die sie erweitern können, um zusätzliche KI-Engines und UI-Steuerelemente zu integrieren.
Das SmartCore AI Component Pack ist in GetIt erhältlich. Verwenden Sie die neue KI-Verbindungskomponente, die eine ähnliche Funktion wie eine Datenbankverbindung in FireDAC hat. Diese einzelne KI-Engine-unabhängige Komponente verwendet spezifische Treiber, um über REST mit verschiedenen KI-Engines (einschließlich OpenAI, Claude, Gemini und Ollama) zu kommunizieren. Die SmartCore-KI-Engine bietet die Möglichkeit, zusätzliche Treiber für KI-Anbieter hinzuzufügen, um die Funktionen Ihres Projekts entsprechend der Marktentwicklung zu erweitern. Die Konfiguration wird über einen benutzerfreundlichen KI-Verbindungsexperten verwaltet.
Teil des Komponentenpakets ist ein Satz von KI-Anforderungskomponenten für verschiedene Datentypen (wie Text, Bilder und strukturierte Daten), die mit Eingabeaufforderungen verknüpft und direkt mit UI-Steuerelementen verbunden werden können, um die Ergebnisse anzuzeigen. Dieses komponentenbasierte Modell macht die Verwendung der SmartCore-KI-Komponenten in RAD Studio 13.0 sehr einfach. Weitere Information finden Sie auf der Seite KI-Komponente.
JSON-Verarbeitung
In diesem Abschnitt werden JSON-bezogene Aktualisierungen aufgeführt:
- Die Attribute TJsonOption.joIgnoreDefault, joIgnoreSpecial wurden hinzugefügt.
- TMarshalUnmarshalBase.ValueSerialization: TJsonValueSerialization mit jvExcludeSpecial-Standard.
- TJSONValue.GetValue<T>(const APath: string; ADefaultValue: T): T-Verhalten wurde geändert: Es wird nach einem JSON-Wert gesucht, sofern möglich. Wenn ein solcher gefunden wird, wird der JSON-Wert in einen angegebenen Typ konvertiert. Wenn kein Wert gefunden wird, wenn er nicht wiederhergestellt werden kann oder wenn der JSON-Wert null ist, wird ein Standardwert zurückgegeben.
- Die Klasse TJSONNumber wird nun direkt von der Klasse TJSONValue geerbt.
- Die Klasse TJSONString ist als "sealed" gekennzeichnet.
- TJsonReader hat jetzt ReadAsUInt64.
Der JSON-Serialisierer verfügt über die Option, Eigenschaften mit Standardwerten zu überspringen:
- Neue überladene Methode TJsonConverter.CanWrite(AValue).
- Es gibt eine TJsonSerializer.MemberSerialization: Eigenschaft TJsonMemberSerialization mit TJsonMemberSerialization.Fields als Standard.
Weitere Delphi-RTL-Änderungen
Im folgenden Abschnitt werden weitere Aktualisierungen der Delphi-RTL für das Release RAD Studio Florence 13.0 vorgestellt.
- Die WinRT-APIs, der externe Snapshot von WinAPI-Headern aus der WinMD-Definition (in GetIt) wurden aktualisiert und WinAPI-Deklarationen in den RTL-Dateien bereinigt.
- Die integrierte Version von DUnitX wurde auf Version 0.4.1 aktualisiert (zuletzt geändert am 26. Juni 2025).
- Eine Version der Funktion TStringHelper.Contains, die die Groß-/Kleinschreibung nicht berücksichtigt, wurde hinzugefügt.
- Die Unit System.StrUtils.LiteralToInt von Funktionen, die "_" und "%binary nums" unterstützen, wurde hinzugefügt. Infolgedessen verwenden die Klassen TIntegerProperty und TInt64Property nun TryLiteralToInt.
- Die neue Funktion TPath.Exists wurde hinzugefügt.
- ReadUInt64 und WriteUInt64 wurden zur Klasse TRegistry hinzugefügt.
- TThreadedQueue verfügt jetzt über die Eigenschaft Count, um eine konsistente Benennung zu ermöglichen.
- TDictionary<K,V> und TOrderedDictionary<K,V> wurden aktualisiert. Bei der Typumwandlung von TOrderedDictionary zu TDictionary wird das TOrderedDictionary-Verhalten beibehalten.
- Die Konstruktoren für die Synchronisierungsklassen TMutex, TSemaphore und TEvent legen jetzt die Eigenschaft THandleObject.LastError fest, bevor sie zum Aufrufer zurückkehren.
- Es gibt einen TStringList-Konstruktor mit der Signatur:</br>
constructor Create(Options: TStringsOptions; Duplicates: TDuplicates = dupIgnore); overload;
- Die Unit System.RTTI verfügt jetzt über die neue Funktion GetStorageSize zum Lesen der Anzahl der Bytes, die zum Speichern eines Werts mit diesem Typ im Arbeitsspeicher erforderlich ist.
- Die neue Methode TSizeF.Zero wurde hinzugefügt.
- Zum Debuggen von Deadlock-Szenarien haben wir die Eigenschaft WriterID zu IReadWrite/TMultiReadExclusiveWriteSync hinzugefügt.
- TRttiDataMember wurde umstrukturiert, indem eine neue Zwischenklasse hinzugefügt wurde:
- TRttiPlaceMember
- TRttiDataMember
- TRttiIndexedProperty
VCL-Verbesserungen
In RAD Studio 13.0 wurden neue Funktionen und umfassende Qualitätsverbesserungen für die leistungsstarken, integrierten UI-Bibliotheken eingeführt. Die VCL enthält eine Integration der UIAutomation-Microsoft-Interfaces, TitleBar-Stile und vieles mehr.
Unterstützung für UIAutomation
Um die Zugänglichkeit und Integration von VCL-Anwendungen mit UI-Testtools zu verbessern, unterstützt die Version 13.0 nun UIAutomation in der VCL-Bibliothek.
Verbesserungen für TitleBar
In diesem Release unterstützt TitleBarPanel benutzerdefinierte VCL-Stile. Das Zeichnen von mit Stilen versehenen Steuerelementen im Bereich der Titelleiste wird auf diese Weise unterstützt.
Außerdem enthält dieses Release die folgenden Aktualisierungen:
- Die neue Eigenschaft TTitleBar.StyleColors wurde hinzugefügt, um die automatische Verwendung der VCL-Stilfarben für den Hintergrund und die Schaltflächen in der Titelleiste zu ermöglichen. Die Unterstützung ist für die folgenden Steuerelemente verfügbar: TButton, TSpeedButton, TCheckBox, TRadioButton, TToolBar, TEdit, TComboBox, TFormTabsBar, TActionToolBar und TActionMainMenuBar.
- Verbesserung der Verwendung von TitleBar in MDI-Anwendungen.
- Unterstützung für Hint wurde für benutzerdefinierte Schaltflächen in TitleBar hinzugefügt.
- Verbesserungen der HighDPI-Unterstützung.
Verbesserungen bei ControlList
RAD Studio Florence 13.0 bietet die folgenden Verbesserungen der ControlList-Komponente:
- Die Komponente ControlList unterstützt einen neuen Typ eines gehosteten Steuerelements, SplitButton. Diese Implementierung umfasst Folgendes:
- Die Stile clbkSplitPushButton und clbkSplitToolButton für das Steuerelement TControlListButton.
- Ein neues Design für einen Dropdown-Bereich mit geteilten Schaltflächen und einem Pfeil.
- Eigenschaft DropDownMenu für das Steuerelement TControlListButton.
- Das neue Ereignis OnGetItemHint und die neue Eigenschaft ShowItemHint wurden hinzugefügt, um Hinweise pro Element anzubieten, anstatt globaler Steuerelementhinweise.
Verbesserungen der Komponente FormsTabsBar
RAD Studio Florence 13.0 bietet die folgenden Verbesserungen für die in RAD Studio 12 eingeführte Komponente FormsTabBar:
- Die Transparenzunterstützung wurde mit zwei neuen Eigenschaften hinzugefügt: Transparent und ShowBottomLine.
- Das neue Ereignis OnGetTabCaption wurde hinzugefügt, das TFormTabsBar flexibler macht.
- Die Methoden TabFromPoint und TabIndexFromPoint sind jetzt "public".
- Die neue Eigenschaft MouseMiddleButtonClose wurde hinzugefügt, damit eine Registerkarte mit der mittleren Maustaste geschlossen werden kann.
Aktualisierungen von EdgeBrowser
In diesem Release wurden die Interfaces zum Microsoft WebView 2-Steuerelement (auch bekannt als Chromium-basiertes Edge) auf Version 1.0.3296.44 des WebView2 SDK aktualisiert.
Außerdem wurde die TEdgeBrowser-Komponente (und die zugehörige Demo) aktualisiert, damit AddWebResourceRequestedFilterWithRequestSourceKinds anstatt von AddWebResourceRequestedFilter unterstützt wird.
WinUI 3-Demo
In diesem Release wurden die WinUI 3-Header und die eigenständige WinUI 3-Demo aktualisiert, die zuvor als separates Download aus GetIt verfügbar war und jetzt in die Kernprodukt-Demos integriert ist.
ActionMainMenuBar-Bildlauf
In diesem Release wurde eine neue Bildlauffunktion für das Steuerelement TActionMainMenuBar hinzugefügt. Diese Funktion wird aktiviert, wenn die vertikale Höhe die Bildschirmhöhe überschreitet.
Sehen Sie sich unten ein Beispiel für diese Funktion in Aktion an. Beachten Sie, dass diese Funktion möglicherweise auch von der RAD Studio-IDE verwendet wird, falls sie auf einem Bildschirm mit niedriger Auflösung ausgeführt wird.
Weitere VCL-Verbesserungen
Im Folgenden finden Sie weitere Aktualisierungen und Änderungen in der VCL.
- Die verbliebene Win98-spezifische Unterstützung wurde aus dem VCL-Code entfernt.
- Das Steuerelement TToggleSwitch wurde verbessert, sodass es nun wie ein Windows 10-/Windows 11-Umschalter aussieht, und die VCL-Stilfamilie "Windows 10" wurde aktualisiert.
- Die Klasse TDragDockObject wurde aktualisiert, um die Eigenschaft DropAlign les- und schreibbar zu machen.
- Das neue Ereignis TActionMainMenuBar.OnSelectMenuItem wurde hinzugefügt, damit Hinweise für Menüeinträge in der ActionMainMenuBar angezeigt werden können.
- Für das Steuerelement TCategoryButtons wurden die Eigenschaften Visible und Enabled von TButtonItem und TButtonCategory hinzugefügt.
- Neue Eigenschaft TStyleManager.FormBorderSize.
- Neues Ereignis TMonthCalendar.OnChange.
- Neue Ereignisse OnBeforeResize und OnAfterResize wurden für TSplitter hinzugefügt.
- Eine neue "public" Funktion, VCLEditors.GetFormDPIForVCLEditors, wurde hinzugefügt, um die Entwicklung der VCL-Editoren unter der HiDPI-IDE zu vereinfachen.
- TCanvas bietet nun überladene Methoden mit TPoint-Parametern für die folgenden Methoden: AngleArc, Draw, LineTo, MoveTo, FloodFill und TextOut.
FireMonkey-Aktualisierungen
FireMonkey in RAD Studio 13.0 integriert einen neuen Display Link Service, der eine deutlich verbesserte Stabilität und flüssigere Animationen bereitstellt. Das Framework bietet außerdem eine verbesserte Leistung beim Kopieren von Bitmaps durch die Nutzung der GPU, eine brandneue MaskEdit-Komponente und vieles mehr.
In diesem Abschnitt werden Aktualisierungen und Verbesserungen für FireMonkey aufgeführt.
Apple-Plattform-APIs
Das Release RAD Studio Florence 13.0 umfasst eine bedeutende Aktualisierung und Erweiterung der in Delphi-Header-Dateien verfügbaren APIs für die Plattformen iOS und macOS. In diesem Release wurden zudem alle iOS-API-Header von der RTL auf iOS 18.4 aktualisiert. Unter anderem wurden folgende spezifischen Erweiterungen vorgenommen:
- Fehlende NSWindow-Funktionen wurden hinzugefügt.
- Die Unterstützung für universelle Links wurde erweitert (in iOSapi.Foundation).
- Weitere CoreText-Konstantenfunktionen wurden in iOSapi.CoreText.pas hinzugefügt.
- coalescedTouchesForTouch(touch: UITouch): NSArray; cdecl; wurde zum UIEvent-Interface in iOSapi.UIKit hinzugefügt.
- Fehlende Methodendeklarationen wurden UITextView- und UITextField-Interfaces in iOSapi.UIKit.pas hinzugefügt.
- Die &string-Methode wurde im NSAttributedString-Interface in iOSapi.Foundation.pas hinzugefügt.
- CVMetalTexture- und CVMetalTextureCache-Deklarationen wurden in iOSapi.CoreVideo.pas hinzugefügt.
- Fehlende Funktionen wurden in Macapi.QuartzCore.pas hinzugefügt.
- Interfaces und Methoden wurden in Macapi.AppKit.pas hinzugefügt.
- Die Deklaration von CTFontManagerRegisterGraphicsFont wurde in Macapi.CoreText.pas hinzugefügt.
- iosapi.CoreLocation wurde auf iOS 18.4 aktualisiert, einschließlich der Unterstützung für CLVisit.
- Die neuen Dateien iOSapi.CoreMIDI, iOSapi.CoreAudioTypes wurden hinzugefügt.
- Die Unit iOSapi.AudioToolbox wurde auf iOS 18.4 aktualisiert. Das AudioUnit-Framework wurde entfernt, weil es veraltet ist, und stattdessen sollte AudioToolbox verwendet werden.
- Das Objekt AVAudioSession, das in iOSapi.AVFoundation importiert wird, wurde erweitert.
- Neuer Header iOSapi.ImageIO.
Android-Plattform-APIs
RAD Studio Florence 13.0 ist standardmäßig auf Android-API-Level 35 ausgerichtet und enthält Tools zur Unterstützung neuerer API-Levels in der Zukunft.
Im Folgenden finden Sie weitere Änderungen:
- Die Klasse TTexture wurde erweitert, damit sie das Ziel
GL_TEXTURE_EXTERNAL_OES
unterstützt. - Das Befehlszeilentool
Java2OP
wurde überarbeitet undDoclava
durch das neue Befehlszeilentooljparser
ersetzt. Dadurch werden Probleme im Zusammenhang mit der erneuten Implementierung von APIs vermieden, die in von Plattformmodulen exportierten Packages deklariert sind. - getEventTimeNanos und getHistoricalEventTimeNanos wurden zu JMotionEvent in Androidapi.JNI.GraphicsContentViewText.pas hinzugefügt.
- Das Befehlszeilentool
manifestmerger
wurde auf Version 31.10.1 aktualisiert. - Das Befehlszeilentool
AAPT2
wurde auf Version 8.10.1 aktualisiert. - Das Befehlszeilentool
dexter
wurde auf Version 1.0.1 aktualisiert. - Das Befehlszeilentool
rclasser
wurde auf Version 1.0.1 aktualisiert. - Das Befehlszeilentool
bundletool
wurde auf Version 1.18.1 aktualisiert. - Das Befehlszeilentool
packager
wurde auf Version 1.2.1 aktualisiert.
Steuerelement MaskEdit
In RAD Studio Florence 13.0 wurde ein neues MaskEdit-Steuerelement für FireMonkey eingeführt, das einen speziellen Designer für Eingabemasken enthält.
Im Gegensatz zur VCL-Entsprechung wird in der FMX-Implementierung von TMaskEdit keine Exception ausgelöst, wenn der aktuelle Wert in MaskEdit ungültig ist. Stattdessen wird empfohlen, das Ereignis OnValidateError zu verwenden. Dieses Ereignis ermöglicht es Entwicklern, Benutzern visuelles Feedback zu einem ungültigen Wert zu geben. Wenn der Wert nach dem Zurücksetzen des Fokus immer noch falsch ist, bleibt er im ungültigen Zustand, und das Ereignis OnChange wird erst ausgelöst, wenn der Wert gültig wird.
Neuer Display Link Service
Der neue Display Link Service für FMX ist jetzt die zentrale Engine für alle Anwendungsanimationen und ersetzt die bisher verwendete alte zeitgesteuerte Engine vollständig.
Dieses framegenaue System nutzt die tatsächliche Bildwiederholfrequenz des Displays, um alle UI-Aktualisierungen und -Animationen zu synchronisieren und zu steuern. Durch die Verwendung plattformnativer APIs wie JChoreographer (Android) und CADisplayLink (iOS) stellt der Dienst sicher, dass die Animationsverarbeitung eng mit VSync-Ereignissen abgestimmt ist, was zu flüssigeren und konsistenteren Darstellungen auf allen Plattformen führt.
FMX-Linux
Für das Release RAD Studio Florence 13.0 ist eine neue Version von FMX-Linux in den GetIt-Packages verfügbar. Außerdem ist die IDE-Integration der Bibliothek jetzt reibungsloser.
Skia-Aktualisierungen
Das Release RAD Studio Florence 13.0 enthält eine Aktualisierung der Skia-Bibliotheksintegration (Skia4Delphi – RAD Studio) auf die neueste Version 7.0.0. Diese Aktualisierung behebt mehrere Probleme und bietet Verbesserungen der Skia-Integration.
Siehe Releases – skia4delphi/skia4delphi
Weitere Verbesserungen bei FireMonkey-Steuerelementen und -Komponenten
Im Folgenden finden Sie weitere Aktualisierungen und Änderungen bei FireMonkey-Steuerelementen und -Komponenten.
- Die Komponente TComboEdit unterstützt jetzt die automatische Vervollständigung bei der Eingabe mit bearbeitbarer Textkonfiguration.
- Eine Reihe neuer Eigenschaften wurde zu TPresentedScrollBox hinzugefügt, damit Benutzer Bildlaufanimationen, Bouncing und Touch-Interaktionen steuern können. Dies sind die neuen Eigenschaften:
- AutoHide
- Bounces
- ScrollAnimation
- ScrollDirections
- TouchTracking
- Die neue Komponente TApplicationEvents wurde hinzugefügt.
- TDateTime wurde in Double geändert, da die API jetzt mit in Sekunden gemessenen Intervallen arbeitet. DisplayLink von iOS arbeitet mit Sekunden, JChoreographer von Android aber mit Nanosekunden.
- Die Methoden von FMX.Text.TextEditor und FMX.Text.SpellingManager wurden in virtuelle Methoden umgewandelt.
- IFMXSpellCheckerService wurde durch Erstellen des neuen Interface IFMXSpellCheckerServiceEx umgestaltet. Dies lässt die Arbeit mit verschiedenen Sprachen und Sätzen zu.
- Die Eigenschaft HitTest wurde für die Komponente TGlyph veröffentlicht (published).
- Die Eigenschaft TextPrompt wurde zu TMemo hinzugefügt, die als Platzhaltertext fungiert, wenn der Text des Steuerelements leer ist. Arbeitet wie die TEdit-Entsprechung.
- Das neue Ereignis OnCheckedChange wurde für TListBoxItem hinzugefügt.
- Für "Grip" im TSplitter-Stil wurde eine Ausrichtung hinzugefügt.
- Die Eigenschaft von TouchTargetExpansion wurde für TShape und andere visuelle Steuerelemente veröffentlicht (published).
- Symbole der TBindNavigator-Schaltfläche können jetzt über Stile geändert werden.
- Die neue Eigenschaft TTrackBar.Reverse wurde hinzugefügt, die die Umkehrung des Schiebereglers ermöglicht. Außerdem unterstützt TTrackBar jetzt den Bildlauf mit dem Mausrad.
- Die Höhe von MenuItem war eine Konstante. Jetzt kann ein TStyleTag-Objekt mit StyleName="height" zum TMenuItem-Stil hinzugefügt und die Höhe des Menüeintrags in der Eigenschaft Value angegeben werden.
- TGlyph hat jetzt neue Eigenschaften, ImageRect und Bitmap, die die tatsächliche Zeichnungsgröße und Koordinaten ermöglichen.
- Auf den Wert FContentHeight von TExpander kann jetzt in der Eigenschaft ContentHeight zugegriffen werden.
- Die TPopupColumn-Eingabe von TStringGrid wurde verbessert.
- Virtuelle DoStateChanged-Methoden wurden für TRadioButton, TCheckBox und TArcDial eingeführt.
- Es gibt eine neue unterstützende Klasseneigenschaft mit dem Typ TCanvasHelper in TCustomCanvasGpu für Entwickler, die die FMX-Bibliothek erweitern möchten.
- FMX.TListBoxGroupHeader verfügt jetzt über TextSetting.Trimming.
- Die Eigenschaft AutoTranslate wurde zu TMainMenu und TPopupMenu hinzugefügt.
- Eine überladene Version der Methode EvaluateJavaScript wurde zu TWebBrowser mit dem Parameter TJavaScriptResultCallback hinzugefügt.
- Die neue Komponente TApplicationEvents wurde hinzugefügt, die der VCL-Entsprechung ähnelt.
- TAlignLayout wurde mit neuen Ausrichtungsoptionen für das Zentrieren von Steuerelementen aktualisiert. Zu den neuen Ausrichtungsmethoden zählen: TopCenter, TopLeft, TopRight, LeftCenter, LeftTop, LeftBottom, RightCenter, RightTop, RightBottom, BottomCenter, BottomLeft und BottomRight.
- Es wurde Unterstützung für die Version 16.0 der Emoji-Symbole hinzugefügt.
- TBindNavigator bietet jetzt die Option bestimmte Hinweise und Stile für jede Schaltfläche mithilfe der Untereigenschaften der Eigenschaft ButtonsOptions zu konfigurieren.
Sonstige Verbesserungen für mobile Anwendungen
- Vollbildunterstützung für iOS.
- RAD Studio übergibt jetzt iOS-Startparameter, die für die Interaktion mit anderen Frameworks und Apps verwendet werden können (siehe TApplicationEvent.FinishedLaunching).
- Das Problem mit der Diktierfunktion unter iOS wurde behoben.
- Es wurde die Möglichkeit hinzugefügt, das Bouncing in einer Listenansicht unter iOS mithilfe der neuen Eigenschaft TListView.Bounces zu deaktivieren. Mit dieser Eigenschaft können Entwickler steuern, dass der Inhalt über seine Grenzen hinaus gescrollt wird. Sie wirkt sich nur auf den Touchscreen aus.
Datenbank und FireDAC
In diesem Bereich gibt es eine Vielzahl von Verbesserungen: von der erweiterten Unterstützung für vorzeichenlose Big-Integer-Datenbankfelder bis hin zu flexibleren Optionen beim Ziehen eines Feldes aus dem Felder-Editor in ein visuelles Formular.
In diesem Abschnitt werden Aktualisierungen und Verbesserungen für Datenbank- und FireDAC-Komponenten aufgeführt.
Datenbank-RTL
Dieser Abschnitt enthält Aktualisierungen und Verbesserungen für die Datenbank-RTL:
- Ein neuer Feldtyp wurde zu TFieldType zur Unterstützung von vorzeichenlosen Big-Integer-Werten hinzugefügt. Jetzt gibt es den Typ TFieldType.ftLargeUint. FireDAC unterstützt ihn über Oracle- und MySQL-Treiber sowie über TFDMemTable.
- Die neue Eigenschaft EllipsisPosition wurde zur VCL-Komponente TDBText hinzugefügt. Sie funktioniert wie bei TLabel.
- Neue DataSet-Eigenschaften wurden für den Zugriff auf die zugeordneten DataSource-Objekte hinzugefügt:
- Eigenschaft TDataSet.DataSourceCount
- Eigenschaft TDataSet.DataSources[Index: Integer]
- Eine überladene
DrpCtrls.RegisterFieldControl
-Prozedur wurde hinzugefügt, die eine benutzerdefinierte Einrichtung des erstellten benutzerdefinierten datensensitiven Steuerelements ermöglicht. Siehe das folgende Beispiel:
uses DrpCtrls;
RegisterFieldControl(TIntegerField, 'TDBLabeledEdit',
procedure (Control: TControl; DataSource: TDataSource; Field: TField)
var
LEdit: TDBLabeledEdit;
begin
LEdit := Control as TDBLabeledEdit;
LEdit.DataSource := DataSource;
LEdit.DataField := Field.FullName;
LEdit.EditLabel.Caption := Field.DisplayLabel;
end);
FireDAC
In diesem Release wurden die folgenden Aktualisierungen und Verbesserungen zu FireDAC hinzugefügt:
- Unterstützung für parallele Operationen in
TFDFBBackup
für Firebird 5.0+ wurde hinzugefügt. ParallelWorkers (TFDIBBackup, TFGIBRestore und TFDIBValidate) gibt die Anzahl der parallelen Worker an, die von einem Service-Manager für die Ausführung von angeforderten Jobs verwendet werden. - TFDMemTable unterstützt RecsSkip und RecsMax. Die RecsSkip- und RecsMax-Einstellungen werden angewendet, wenn Filtered auf True festgelegt ist.
- FireDAC bietet nun mehr Flexibilität bei der Rückgabe von Textdaten für PostgreSQL-Array-Typen. Im Folgenden finden Sie zwei Möglichkeiten, wie
relacl
-Felder als lesbarer Text angezeigt werden können:- Umwandeln eines Felds:
relacl::TEXT
- Festlegen von ResourceOptions.DirectExecute auf True. FireDAC verwendet dann intern das Textformat von PostgreSQL für die Ergebnismengen.
- Umwandeln eines Felds:
- Einige transaktionsbezogene Methoden in den Klassen TFDCustomConnection und TFDCustomTransaction wurden in virtuelle Methoden umgewandelt, um das Verhalten abgeleiteter Klassen besser anzupassen.
- TFDMemTable ermöglicht das Laden von Standard-JSON (das nicht durch das Speichern von Daten aus FireDAC generiert wurde) unter Verwendung des neuen TFDStorageFormat.sfFreeFormJSON. Beispiele:
- FDMemTable1.LoadFromFile('test.json', sfFreeFormJSON);
- FDMemTable1.SaveToFile('test2.json', sfFreeFormJSON).
- Für Oracle-Verbindungen wurde in RAD Studio Florence 13.0 Unterstützung für die OAuth 2.0-Authentifizierung mit der FireDAC-Komponente TFDConnection in Delphi hinzugefügt.
- Neue Parameter für Verbindungsdefinitionen:
- OAuth_Token: gibt ein OAuth2- oder IAM-Token an. Erfordert Oracle 19.13.
- OAuth_PrivKey: gibt einen privaten IAM-PoP-Schlüssel an. Wenn angegeben, wird die IAM-Token-basierte Authentifizierung verwendet, andernfalls wird die Azure OAuth2-Authentifizierung verwendet. Erfordert Oracle 19.13.
- Verwenden Sie die Komponente TOAuth2Authenticator, um ein OAuth2-Token abzurufen. Verwenden Sie die automatische Verbindungswiederherstellung von FireDAC, um ein Token zu verlängern und ein neues Token zu übermitteln.
- Neue Parameter für Verbindungsdefinitionen:
DataSnap
In diesem Release wurden Ereignisse für die Zertifikatsvalidierung zu TFDConnection und TDSClientCallbackChannelManager hinzugefügt, die HTTPS als Transport verwenden können:
- TFDConnection.ValidatePeerCertificate.
- TDSClientCallbackChannelManager.ValidatePeerCertificate.
Aktualisierungen der Web-Client-Bibliotheken
Das Release RAD Studio Florence 13.0 enthält die folgenden Aktualisierungen: Das HTTP/3-Protokoll wurde für die Unterstützung von THttpClient über THTTPProtocolVersion.HTTP_3_0 hinzugefügt. Für SOAP-Clients gibt es jetzt eine asynchrone Version von THTTPReqResp.Execute.
WebBroker-Aktualisierungen
Das Release RAD Studio Florence 13.0 bietet mehrere Erweiterungen für WebBroker, darunter eine moderne, integrierte HTTP-Sitzungsverwaltung, eine verbesserte Apache-Integration, Unterstützung für Nginx-Webserver, erweiterte Protokollierung und eine einfache WebStencils-Integration, wodurch Webanwendungen sowohl einfacher zu entwickeln als auch leistungsfähiger werden.
Sitzungsverwaltung und -authentifizierung
Dieses Release enthält eine neue Klasse, TWebSessionManager, die eine Liste mit TWebSession-Objekten verwaltet. Es handelt sich um eine nicht visuelle Komponente, die zur Laufzeit eine Reihe von Eigenschaften bereitstellt.
Die Eigenschaft TWebRequest.Session gibt die Sitzung der Anforderung zurück. Benutzerdefinierte Objekte, die in TWebSession.DataVars gespeichert sind, stehen nun direkt in WebStencils-Skripten zur Verfügung.
Sitzungsauthentifizierung kann in die Sitzungsverwaltung integriert werden und auf unterschiedlichen Logiken basieren.
Ein "sentinel"-Algorithmus wurde in TCustomWebDispatcher.DispatchAction integriert und delegiert die Verarbeitung an IWebSessionManager oder IWebAuthenticator.
Weitere Änderungen der Bibliotheksunterstützung:
- Sitzungsverwaltung:
- TWebSessionManager wurde für die Verwaltung einer Sammlung von TWebSession-Objekten hinzugefügt. Es handelt sich um eine nicht visuelle Komponente mit Entwurfszeiteigenschaften und den folgenden Konfigurationen: IdLocation, IdName, Scope (ssUnlimited, ssUser und ssUserAndIP), Timeout und SharedSecret.
- Die Klasse TWebSession wurde hinzugefügt, die einzelne Sitzungen repräsentiert.
- Authentifizierung:
- Die Klasse TWebBasicAutenticator wurde hinzugefügt, die die grundlegende HTTP-Authentifizierung implementiert.
- Die Klasse TWebFormsAuthenticator wurde hinzugefügt, die die auf HTML-Formularen basierte Authentifizierung implementiert.
- Autorisierung:
- TWebAuthorizer stellt rollenbasierte Zugriffssteuerung durch Autorisierungszonen bereit.
- Die Autorisierung prüft Benutzerrollen anhand von Zonenanforderungen. Verwenden Sie das Ereignis OnAuthorize für die benutzerdefinierte Autorisierungslogik. Fehlgeschlagene Autorisierungen werden an UnauthorizedURL umgeleitet oder geben den Status 403 zurück.
- WebStencils-Integration:
- Sitzungen können mit den folgenden WebStencils-Vorlagen integriert werden:
@session.xxx
: Zugriff auf Eigenschaften des Sitzungsobjekts.@session.DataVars
: Zugriff auf benutzerdefinierte Sitzungsvariablen.@session.UserHasRole(<string>)
: Prüft, ob ein Benutzer eine bestimmte Rolle innehat.@<n>
: Direkter Zugriff auf Objekte, die in DataVars mit dem Schlüssel<n>
gespeichert sind.
- Sitzungen können mit den folgenden WebStencils-Vorlagen integriert werden:
- Neue Anforderungseigenschaften:
- TWebRequest.AuthUserName: Authentifizierter Benutzername
- TWebRequest.AuthMethod: Verwendete Authentifizierungsmethode
- TWebRequest.Session: Aktuelles Sitzungsobjekt der Anforderung.
Fügen Sie diese Komponenten dem Webmodul hinzu (nur ein TWebSessionManager und ein Authentifikator pro Modul) und die Komponenten werden automatisch vom Dispatcher-Sentinel erkannt. Der Verarbeitungsablauf ist Sitzungsverwaltung > Authentifizierung > Autorisierung > Aktionsweitergabe.
Sitzungen werden automatisch erstellt, wenn TWebSessionManager vorhanden ist. Authentifizierung ist obligatorisch, wenn eine Authentifikator-Komponente hinzugefügt wird (verwenden Sie TWebAuthorizer, um dies zu steuern). Alle Komponenten arbeiten über Interfaces (IWebSessionManager, IWebAuthenticator, IWebAuthorizer) zusammen.
Protokollausgabe
Es gibt eine neue TWebApplication.Log-Methode mit Schweregrad, Meldung und Parameter, die auf allen Plattformen unterstützt wird und das entsprechende Hosting-Webserver-Protokollsystem verwendet:
- Apache: Protokolldatei des Apache-Servers, standardmäßig logs\error.log.
- ISAPI: Windows-Ereignisprotokoll (eventvwr.msc): Windows-Protokolle
- CGI: Datei mit dem Namen TCGIApplication.LogFileName.
- FastCGI: Protokolldatei des HTTP-Servers (Apache, nginx), standardmäßig logs\error.log.
Erweiterte TWebRequest-Klasse
In diesem Release wurde die Klasse TWebRequest erweitert und bietet nun Folgendes:
- Methode ExtractAllHeaders, Eigenschaft AllHeaders
- SessionID
- AuthUserName und AuthMethod
Apache Config
In diesem Release wurde Apache Config eingeführt, ein textbasiertes und erweiterbares Konfigurationssystem. Nachfolgend finden Sie ein Beispiel der Konfiguration.
Beispiel:
MyEnabled On
MyFolder "c:/temp"
MyMimeTypes image/bmp text/html
<Location /qwe/asd>
MyEnabled On
MyFolder "c:/temp/asd"
</Location>
<Location /qwe/asd/zxc>
MyMimeTypes image/png image/jpeg text/html
MyRole admin
</Location>
Verwendet die Zuordnung eines Delphi-Records zu Apache-Direktiven (nur nicht verwaltete Feldtypen, einschließlich string[n]):
- Verwenden Sie WebHTTPMethod-Attribute, um die Zuordnung anzupassen.
- Verwenden Sie Web.ApacheApp.InitConfig, um den Record-Typ zu registrieren. Rufen Sie dies direkt nach InitApplication auf.
- Verwenden Sie Web.ApacheHTTP.TApacheRequest.GetConfig, um eine Record-Instanz mit spezifischen Werten für eine Anforderungs-URL abzurufen.
- Verwenden Sie Web.HTTPDMethods.IHTTPDConfigAdaptor, THTTPDCustomConfigAdaptor<T>, um die Record-Initialisierung und -Überschreibung anzupassen.
Der WebBroker-Experte enthält die Option, ein Apache-Config-Beispiel einzubeziehen.
FastGCI und NGINX-Unterstützung
In diesem Release wurde die FastCGI-Unterstützung für nginx hinzugefügt. Dieses Interface stellt den Zugriff auf ein Webmodul bereit, das als separate Anwendung ausgeführt wird.
Im Einzelnen:
- Die neuen Units Web.FastCGIApp.pas, Web.FastCGIHTTP.pas und Web.FCGI_Protocol.pas wurden hinzugefügt.
- FastCGI wird von nginx und Apache unterstützt.
- Neue Klassen wurden hinzugefügt: TFastCGIApplication, TFastCGIRequest und TFastCGIResponse.
- Unterstützung für FastCGI wurde dem WebBroker-Experten hinzugefügt.
Fügen Sie die folgenden Zeilen zu conf\nginx.conf hinzu, um eine Anwendung bei nginx zu registrieren:
# 1) "location" mask, fastcgi_param directives are environment dependent
# 2) Update the fastcgi_pass directive when the host or port is different
# 3) This will redirect the request "GET http://localhost:8000/fcgi/"
# to the FastCGI server.
location ~ ^/fcgi(.*)$ {
include fastcgi_params;
fastcgi_param SCRIPT_NAME /fcgi;
fastcgi_param PATH_INFO $1;
fastcgi_param SCRIPT_FILENAME dummy;
fastcgi_param PATH_TRANSLATED $document_root$1;
fastcgi_keep_conn on;
fastcgi_pass 127.0.0.1:9000;
}
Erweiterungen für WebStencils
WebStencils erweitert die bestehenden Webtechnologien in RAD Studio erheblich, indem es serverseitige Skripterstellung bereitstellt und RAD Server von einer Webdienst-Engine in ein Website- und Webdienst-Tool umwandelt.
In den folgenden Abschnitten werden die WebStencils-Aktualisierungen in RAD Studio Florence 13.0 beschrieben.
- Die Positivlisten-Mechanismus-Eigenschaft wurde implementiert, um die Offenlegung sensibler Informationen wie Datenbankverbindungsstrings oder anderer sensibler Informationen zu verhindern. Hier erfahren Sie, wie Sie die Positivliste anpassen können.
- Die Möglichkeit, zusätzliche Variablen der Skript-Engine außerhalb der Objekt- und Datenmengenmodelle hinzuzufügen, wurde eingeführt.
Die @-Notation von WebStencils für eine Datenmenge ermöglicht nun zusätzlich zum Feld auch den Zugriff auf die Datenmengeneigenschaften. Die Zugriffsebene auf das anzuzeigende Feld kann mit einer speziellen Eigenschaft (TWebStencilsProcessor.Whitelist) gesteuert werden, um den nicht autorisierten Zugriff auf interne Informationen zu verhindern. Hier finden Sie weitere Einzelheiten.
- WebStencils wird jetzt automatisch in Websitzungen integriert, sofern verfügbar. Weitere Einzelheiten finden Sie hier.
- WebStencils unterstützt nun die Weitergabe von @ExtraHeader-Inhalten durch verschachtelte Layout-Hierarchien. Weitere Einzelheiten finden Sie hier.
- Erweiterungen wurden zu den WebStencils-Schlüsselwörtern hinzugefügt, indem das Schlüsselwort
@page
zwei zusätzliche Werte erhielt:@page.request_path
und@page.request_segment
.
Verbesserungen für RAD Server
RAD Studio 13.0 macht die Verwendung der Swagger-basierten API-Dokumentation flexibler, erweitert die Unterstützung für mehrere Mandanten in RAD Server um eine Option zur Integration mandantenspezifischer Konfigurationen und führt eine einfache und direkte Möglichkeit zur Implementierung der API-Versionierung ein.
Im folgende Abschnitt werden die Verbesserungen von RAD Server im Release RAD Studio Florence 13.0 beschrieben.
- Swagger-API-Dokumentation für RAD Server; Schema und Referenzparameter für Swagger- und OpenAPI-Definitionen sind jetzt optional.
- Die Option für die Rückgabe eines benutzerdefinierten Headers in der Swagger-Antwort mit dem neuen Attribut EndPointResponseHeaderAttribute wurde hinzugefügt.
- Neue Methoden SetBaseUrl und GetBaseUrl.
- In diesem Release wurde der Unterstützung mehrerer Mandanten für RAD Server eine Möglichkeit hinzugefügt, eine mandantenspezifische Konfiguration (wie Datenbankverbindungen) zu integrieren, die vor der Ausführung der Geschäftslogik festgelegt werden muss. Insbesondere wurde Folgendes hinzugefügt:
- Mit einem Mandantenpräfix versehene Servervariablen: Durch die Angabe einer mit einem Mandantenpräfix versehenen Variablen wird sichergestellt, dass deren Wert verwendet wird. Andernfalls wird eine Variable ohne Mandantenpräfix verwendet.
- Ein IEMSResourceInterceptor-Interface mit BeforeRequest- und AfterRequest-Methoden.
- RAD Server unterstützt jetzt das Exportieren mehrerer Versionen der gleichen API-Funktion. Dies ermöglicht es Clients mit dem neuen Attribut ResourceVersion, die neueste oder eine ältere Version der REST-API aufzurufen. Die neuen TEMSVersionStatus-Werte lauten wie folgt:
- Experimental: verwendet
ver/myapi/…
als Basis-URL und fügt der Swagger-Beschreibung "Experimental" hinzu. - Active: verwendet
ver/myapi/…
als Basis-URL. - Default: verwendet
ver/myapi/…
undmyapi/…
als Basis-URLs. - Deprecated: verwendet
ver/myapi/…
als Basis-URL und fügt der Swagger-Beschreibung "Deprecated" hinzu.
- Experimental: verwendet
Siehe auch
- Installationshinweise
- Release-Hinweise
- Neue Funktionen und behobene Probleme
- Neuerungen in den letzten Releases
<references>
</references>
- ↑ 1,0 1,1 Der Grund für die Entfernung des Animations-Renderintervalls ist, dass so Konsistenz mit der aktuellen Bildwiederholfrequenz des Displays erreicht wird. Die Anwendung kann auf Geräten mit 60-Hz-, 90-Hz- oder 120-Hz-Displays ausgeführt werden, und der Bildlauf wird automatisch flüssiger, ohne dass manuelle Intervallanpassungen erforderlich sind. Die ausgeführten Animationen werden bei jedem neuen Bildschirmframe ständig aktualisiert (neu berechnet).