Neue Features und behobene Probleme in RAD Studio 10.4, die von Kunden gemeldet wurden

Aus RAD Studio
Wechseln zu: Navigation, Suche

Zusammenfassung: Liste der neuen Features und der behobenen Probleme in RAD Studio 10.4 Sydney, die von Kunden gemeldet wurden.

RAD Studio™️ ist die ultimative RAD-Umgebung für die schnelle Erstellung hochleistungsfähiger nativer, plattformübergreifender Anwendungen in Delphi und modernem C++ mit bei Entwicklern beliebten integrierten Toolketten.

RAD Studio 10.4 Sydney enthält neue Features, Erweiterungen und Qualitätsverbesserungen.

Wichtige Features in RAD Studio 10.4

  • Wichtige Verbesserungen für Delphi Code Insight
  • Neue Delphi-Sprach-Features
  • Einheitliche Speicherverwaltung für alle unterstützten Plattformen für Delphi und C++
  • Neue VCL-Komponenten, Stile auf Steuerelementebene, High-DPI-Stile und mehr
  • Erweiterte Delphi-Unterstützung für geräteübergreifende Plattformen
  • Viele Datenbankverbesserungen
  • Einheitliches Installationsprogramm für Online- und Offline-Installationen
  • Verbesserungen der IDE-Benutzerfreundlichkeit und -Leistung
  • Neuer Debugger für Windows 64 Bit für C++
  • Leistungs- und Qualitätsverbesserungen für die C++-Toolkette
  • Erweiterte Unterstützung für C++-Bibliotheken
  • Erweitertes CMake für C++-Features und Kompatibilität mit anderen Toolketten
  • Hunderte von Qualitäts- und Leistungsverbesserungen

Eine detaillierte Liste der neuen Features finden Sie auf der Seite Neuerungen.

Weitere Qualitätsverbesserungen in RAD Studio 10.4

Es wurden viele signifikante Qualitätsverbesserungen in verschiedenen Bereichen des Produkts vorgenommen. Zu den wichtigsten zusätzlichen (kleineren) neuen Features gehören die in den folgenden Abschnitten aufgeführten.

App-Tethering

  • Die Qualität von App-Tethering wurde in Anlehnung an die bereits in RAD Studio 10.3.3 durchgeführten Änderungen weiter verbessert.
  • Jetzt gibt es eine Option zum Festlegen von Tethering-Timeouts.
  • Tethering-Ressourcen bieten einen Mechanismus zur Ermittlung, wann die Kommunikation abgeschlossen ist.

Threading und Parallel Programming Library

  • ForceQueue enthält einen neuen Parameter AMinTimeToWait, mit dem die Ausführung von Code verzögert werden kann, ohne einen Thread zu erstellen.

Delphi-RTL

  • Neue TCustomIniFile-Methoden WriteInt64 und ReadInt64.
  • Neue TGUID-Methode IsEmpty.
  • Optimierung zum Lesen von JSON: TJSONReader ist jetzt um 50% schneller.
  • Die Eigenschaft Items von TJSONArray ist jetzt die Standard-Array-Eigenschaft, mit der Sie myJArray[2] anstatt myJArray.Items[2] schreiben können.
  • Optimierte Zuweisung einer StringList zu einer anderen StringList.
  • Wir haben einige Abhängigkeiten entfernt, die die Ausführung bestimmter Konsolen-Apps auf WindowsServerCore blockieren.
  • Die Funktion CopyFrom von TStream hatte früher einen festen, konstanten Puffer zum Kopieren von Daten (auf 60K festgelegt). Dies kann beim Kopieren großer Streams sehr ineffizient sein. Der neue Standardwert ist 1 MB, aber die Methode verfügt über einen zusätzlichen Parameter, mit dem Sie je nach Kopiervorgang (Quell- und Ziel-Streams) eine bestimmte Puffergröße angeben können. Die neue Signatur der Methode lautet:
// class TStream
  function CopyFrom(const Source: TStream; Count: Int64 = 0;
  BufferSize: Integer = $100000): Int64;
  • Zu den RTTI-Leistungsverbesserungen zählen:
    • TRttiMethod.Invoke ist etwa 4 mal schneller.
    • Der Aufruf von TVirtualInterface ist etwa 1,7 mal schneller.
    • TRttiType.GetXxxx(AName)-Methoden sind etwa 10 mal schneller.
    • Bei TValue sind mehrere Operationen schneller.
  • Die Operation QuickSort in System.Classes ist jetzt effizienter (d. h. schneller).
  • Die Methode TStringHelper.GetHashCode wurde so aktualisiert, dass der String vor dem Hashing nicht mehr in Großbuchstaben umgewandelt wird. Die Ergebnisse der Methode stimmen jetzt mit den anderen internen Operationen wie der TStringComparer-Klasse überein.

FreeAndNil

In 10.4 wurde die Signatur der Prozedur FreeAndNil aktualisiert, um deren Verwendung mit Interface-Referenzen und anderen nicht unterstützten Datentypen zu vermeiden. Sie ist nun so deklariert, dass sie eine Referenz auf ein TObject benötigt:

procedure FreeAndNil(const [ref] Obj: TObject); inline;

Dies bedeutet, dass eine falsche Verwendung von FreeAndNil nun einen Compilerfehler verursacht. In der Vergangenheit wurde eine falsche Verwendung nicht abgefangen, was zu schwierigen Fehlern führte. Beachten Sie, dass tatsächlich die Variable für die Übergabe per Referenz geändert wurde, obwohl der Parameter als const deklariert ist.

Eine neue, aber "nicht so falsche" Klasse von inkorrekten Aufrufen ist mit dieser Deklaration von FreeAndNil möglich: Die Methode kann mit der Übergabe von Eigenschaften oder einem Methodenergebnis aufgerufen werden, aber auch mit Ausdrücken zur Typumwandlung, der impliziten Konvertierung eines Typs in TObject usw. Der auf nil gesetzte Wert ist dann die temporäre Variable im Ausdruck.

FreeAndNil in C++

Sie erhalten einen Compilerfehler, wenn der Zeigertyp kein Nachkomme von TObject ist. Das heißt, FreeAndNil ist jetzt typsicher. Der Fehler hat die Form einer static_assert in einem System-Header – obwohl der Fehler im System-Header ausgelöst wird, gibt die Assertion einen Fehler im Code an, der FreeAndNil verwendet.

Die neue Implementierung behebt auch die inkorrekte Verwendung von FreeAndNil in C++. In der Vergangenheit war eine direkte Übersetzung des Delphi-Idioms, den Zeiger an FreeAndNil zu übergeben, ein häufiger Fehler:

TObject* o = new TObject();
FreeAndNil(o); // Warning! Used to require FreeAndNil(&o)

Früher stürzte dieser Code ab oder führte zu unerwartetem Verhalten, weil FreeAndNil einen Zeiger auf einen Zeiger benötigte (und sein Parameter nur als void* angegeben wurde), aber keine Warnung ausgeben konnte, wenn ein TObject* übergeben wurde und nicht ein Zeiger auf diesen Zeiger.

Sowohl der klassische als auch der Clang-Compiler unterstützen zwei Überladungen von FreeAndNil, Zeiger-zu-Zeiger und Referenz-zu-Zeiger. Jetzt wird für dieselbe zuvor fehlerhafte Codezeile dieser Zeiger per Referenz erfasst und der korrekte Zeiger freigegeben.

FireDAC-SQLite-Treiber bietet statische und dynamische Einbindung

Für SQLite fügt FireDAC die Möglichkeit hinzu, zwischen statischer und dynamischer Einbindung der SQLite-Engine auszuwählen. Für die Verwendung der statischen Einbindung der SQLite-Engine muss die Unit "FireDAC.Phys.SQLiteWrapper.Stat" der uses-Klausel einer der Units in Ihrem Projekt hinzugefügt werden. Ansonsten wird die dynamische Einbindung gewählt. Es gibt die neue Eigenschaft TFDPhysSQLiteDriverLink.EngineLinkage. Wenn der Wert slDefault oder slStatic ist, dann wird die Unit "FireDAC.Phys.SQLiteWrapper.Stat" zur Entwurfszeit der Unit hinzugefügt, die die Komponente enthält. Wenn die Anwendung die Verbindung zur Laufzeit definiert, dann muss die Unit "FireDAC.Phys.SQLiteWrapper.Stat" manuell hinzugefügt werden.

Weitere Datenverbesserungen

  • FireDAC Verbesserungen im PostgreSQL-Treiber mit besserer Unterstützung für komplexe Typen in TDataSetField und für den Typ "hstore".
  • FireDAC unterstützt Firebird3 isc_info_sql_explain_plan in TIBStatement.
  • RAD Server TEMSDataSetResource unterstützt nun den "Total"-Wert bei der Get-Antwort für Sencha Ext JS VirtualStore. Schließen Sie zur Aktivierung des Sencha Ext JS VirtualStore-Formats roVirtualStore in TEMSDataSetResource.Options ein.
  • Für die Komponente DBImage gibt es eine neue virtuelle DoLoadPicture-Methode und eine OnLoadPicture-Ereignisbehandlungsroutine.

Mehrere Verbesserungen und Fixes für die Komponente TFDEventAlerter.

Internetbezogene Verbesserungen

  • Für RestRequest steht nun eine Möglichkeit bereit, eine asynchrone Anfrage abzubrechen.
  • (SOAP) Zusätzliche Eigenschaften SendTimeout und UseDefaultCredentials sowie die Ereignisse OnPostingData und OnHttpError in der Klasse THTTPReqResp.
  • Möglichkeit, das Client-Zertifikat für alle SOAP-HTTP-Clients festzulegen (TStreamLoader)
  • TNetHTTPClient unterstützt TLS 1.3.
  • Der Typ TAmazonRegion (in Data.Cloud.AmazonAPI) wurde von einem Aufzählungswert in einen String-Wert geändert, sodass zusätzliche Regionen direkt von Entwicklern hinzugefügt werden können, ohne auf ein Update der Komponente selbst warten zu müssen.
  • Die Schreibweise der Methode THTTPClient.CreateFormFromStrings wurde korrigiert (war früher THTTPClient.CreateFormFromStings). Dadurch schlägt jeder vorhandene Code, der die Methode verwendet, mit einem Fehler fehl. Wir gehen aber davon aus, dass diese Methode nicht häufig verwendet wird, sodass diese Korrektur sich nur auf wenig vorhandenen Quelltext auswirken sollte.

In 10.4 behobene öffentlich gemeldete Fehler

RAD Studio 10.4 Sydney enthält über 1.000 Qualitäts- und Leistungsverbesserungen, einschließlich Fixes von über 700 öffentlich gemeldeten Fehlern.

Liste der in 10.4 behobenen öffentlich gemeldeten Fehler

Siehe auch