Neuerungen

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Neuerungen in Version 1.14

C++ wurde zu Appmethod hinzugefügt

Appmethod 1.14 unterstützt jetzt die Programmiersprache C++:

  • C++ in Appmethod unterstützt dieselben Zielplattformen wie Object Pascal mit Ausnahme des iOS-Simulators, der von C++ nicht unterstützt wird.
Weitere Informationen finden Sie unter Geräteübergreifende Anwendungen.

Aktivierte automatische Referenzzählung (ARC) für C++-Android

  • C++-Android verwendet aus Kompatibilitätsgründen mit Object Pascal-Android die automatische Referenzzählung (ARC).
    Die gesamte ARC-Verwaltung erfolgt im C++-Android-Compiler, daher müssen Sie sich bei Ihrer Arbeit in der ARC-Umgebung von C++-Android darum nicht kümmern. In Ihrem C++-Code können Sie weiterhin die Zeigersyntax für eine Object Pascal-Klasseninstanz verwenden. Der C++-Android-Compiler behandelt diese Zeiger als spezielle Zeiger, und daher müssen weder Deklarationen noch die Verwendung geändert werden.
  • Weitere Informationen finden Sie unter Automatische Referenzzählung in C++.

Packages für 64-Bit-Windows werden jetzt von C++ unterstützt

C++ unterstützt nun die Erzeugung von Packages für 64-Bit-Windows. Der C++-Compiler erzeugt BPL-Dateien für Win64. Beachten Sie bitte, dass Appmethod C++ keine DYLIBS für den Mac oder Packages für die iOS- und Android-Plattformen erzeugt. Für diese Plattformen können statische Bibliotheken verwendet werden.

Unterschiede zwischen Win32- und Win64-Packages:

  • Der Compiler exportiert für Win64 Codeelemente, die mit PACKAGE gekennzeichnet sind, wenn sie in der aktuellen Übersetzungs-Unit definiert sind. Bei Klassen wird die Klasse exportiert, wenn ein Nicht-Member definiert ist. Wenn keine Definition vorhanden ist, behandelt der Compiler das Codeelement als importiert. Dieses Verhalten unterscheidet sich vom Verhalten unter Win32.
  • Sie müssen PACKAGE für Win32 und Win64 verwenden, aber Win64 exportiert nur, wenn eine Definition vorhanden ist. Diese Anforderung gilt für Variablen, Funktionen und Klassen, die für den Verwender des Package bereitgestellt werden sollen.

Beispiel:

class PACKAGE TTest : public System::TObject {
private:
  int FProp;
  __property int Prop = {read=FProp, write=FProp};
public:
  __fastcall TTest(void);
  __fastcall virtual ~TTest(void);
};
PACKAGE bool GoodieFlag;
PACKAGE void __fastcall SuperFunc(const System::UnicodeString S);

Anforderungen für Win64-Packages:

  • Um eine Komponentenklasse aus einem Package zu exportieren, muss mindestens ein Nicht-Inline-Member für jede Komponente vorhanden sein (der Experte Komponente > Neue Komponente führt dies für Sie durch).
  • Wenn Sie zuvor das Package-Ausgabeverzeichnis für die Erstellung eines Win32-Package eingestellt haben, müssen Sie auf der Seite Tools > Optionen > Umgebungsoptionen > C++-Optionen >Pfade und Verzeichnisse (C++) den Pfad für Ihr Win64-Projekt ändern, damit Ihr Win32-Package nicht überschrieben wird.

HPPEMIT-Direktiven des Object Pascal-Compilers für mobile Apps

Sie können jetzt mit ${HPPEMIT}-Direktiven C++-Namespace-Deklarationen linken und generieren:

  • {$HPPEMIT NOUSINGNAMESPACE} unterdrückt die Erzeugung von "using namespace <Unit-Name>;".
  • {$HPPEMIT LINKUNIT} ersetzt #pragma link für die Zielplattformen "Android" und "iOS-Gerät".

Weitere Informationen finden Sie unter $HPPEMIT.

Änderungen des C++-Compilers für 1.14

Für Deklarationen ist jetzt ein Typ erforderlich (Nur Clang-basierte C++-Compiler)

  • Für unsere Clang-basierte C++-Compiler|Clang-basierten C++-Compiler (BCC64, BCCIOSARM und BCCAARM) müssen nun Deklarationen in C++ einen Typ haben. Das bedeutet, dass Sie in Deklarationen kein implizites "int" verwenden können, und daher beispielsweise einen Fehler erhalten, wenn WinMain keinen Rückgabetyp wie im folgenden Code hat:
WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{
  ...
}
Der obige Code erzeugt nun den folgenden Fehler:
 C++ requires a type specifier for all declarations
Aktualisieren Sie den Code folgendermaßen, um diesen Fehler zu beheben:
int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{
  ...
}

Definitionen von offenen Arrays verwenden jetzt Data_High anstatt Data_Size

Um klarzustellen, dass der zweite Parameter in einer Definition eines offenen Arrays die Größe des Arrays minus 1 ist, wurde der Parameter Data_Size in Data_High umbenannt.

Weitere Informationen finden Sie unter "Unterstützung für offene Arrays" in Offene Arrays.

Deaktivierung der Erzeugung von MAP-Dateien durch den C++-LD-Linker

Die Option .map-Symboldatei erzeugen ist jetzt für iOS und Android deaktiviert. Wenn Sie eine MAP-Datei erzeugen müssen, aktivieren Sie unter Projekt > Optionen > C++-Linker die Option .map-Symboldatei erzeugen.

Suchen von Definitionen/Suchen von Referenzen

Unsere Clang-basierte C++-Compiler|Clang-basierten C++-Compiler (BCC64, BCCIOSARM und BCCAARM) unterstützen jetzt die neue Funktion Definitionen suchen und Referenzen suchen. Appmethod enthält die Befehle Suchen (C++), die im Kontextmenü verfügbar sind, wenn Sie im Quelltext-Editor mit der rechten Maustaste auf einen Bezeichner klicken. Je nach Bezeichnertyp geben diese Befehle verschiedene Informationen zurück, die die Produktivität Ihrer Arbeit erhöhen. Sie können beispielsweise alle Referenzen auf einen ausgewählten Bezeichner im gesamten Projekt, die Bezeichnerdeklaration, die Basis- oder abgeleiteten Klassen (wenn der Bezeichner auf eine Klasse verweist) usw. ermitteln.

Diese Funktion ist detaillierter unter "Änderungen der IDE für 1.14" (#Neue Menüeinträge und Ergebnisfenster für "Referenzen suchen/Definition suchen" in C++) beschrieben.

Weitere Informationen finden Sie unter Suchen von Definitionen und Referenzen (C++).

Änderungen des Object Pascal-Compilers

Die Compiler-Direktive $LIBVERSION fügt nach der Dateierweiterung, wie .dll, .dylib, .bpl, .map, .rsm usw., keine Bibliotheksversionsdaten mehr an. Bibliotheksversionsdaten werden jetzt in den $LIBSUFFIX-String (falls vorhanden) und nach dem Dateinamen, aber vor der generierten Erweiterung eingefügt.

Diese Direktiven ($LIBPREFIX, $LIBSUFFIX und $LIBVERSION) können auf der Seite Projekt > Optionen > Beschreibung festgelegt werden.

Änderungen in FireMonkey

Ermitteln von nicht unterstützten Android-Gerätearchitekturen

Wenn Sie eine FireMonkey-Anwendung auf einem Gerät mit einer nicht von Appmethod unterstützten CPU-Architektur ausführen, zeigt die Anwendung jetzt eine Fehlermeldung auf dem Gerät an:

Application not supported by this device 

Für die Implementierung dieser Funktion bezieht der Bereitstellungs-Manager drei kleine Bibliotheken mit nativem Code in Ihr Android-APK-Paket ein. Diese Bibliotheken sind für Architekturen vorgesehen, die von FireMonkey-Anwendungen nicht unterstützt werden:

  • ARMv6
  • Intel x86
  • MIPS

Die Fehlermeldung wird von dem Code in diesen drei Bibliotheken angezeigt.

Im Bereitstellungs-Manager werden diese nativen Bibliotheken angezeigt (markierte Zeilen):

DeplyMgrAndroidDetectors.png

Wichtig: Wenn Sie Ihre Anwendung für die Veröffentlichung im Google Play-Store erzeugen, müssen Sie diese drei zusätzlichen Bibliotheken deaktivieren, indem Sie im Bereitstellungs-Manager die Häkchen vor deren Namen entfernen. Dadurch wird verhindert, dass sie in Ihr APK-Paket einbezogen werden, und der Google Play-Store kann die Geräteanforderungen für Ihre Anwendung korrekt ermitteln.

Zum Beispiel:

DeployMgrWithDisabledARMEABIlib.png
Hinweis: Geräte mit Android 4.0.x (einschließlich einiger Kindle Fire-Tablets) könnten fälschlicherweise melden, dass die Anwendung nicht kompatibel ist (aufgrund eines Fehlers im Bibliotheksladeprogramm von Android 4.0.x). Um dieses Problem zu beheben, installieren Sie entweder eine neuere Version von Android auf dem Gerät, oder entfernen Sie die native Bibliothek ARMv6 (armeabi) aus der Bereitstellung, indem Sie die armeabi-Bibliothek im Bereitstellungs-Manager deaktivieren, wie in der obigen Abbildung gezeigt.

Eine Liste mit den unterstützten Android-Geräten finden Sie unter Für die Anwendungsentwicklung unterstützte Android-Geräte.

Unterstützung für Mac OS X Lion (10.7) eingestellt

Wir unterstützen weiterhin Mountain Lion (10.8), und jetzt unterstützen wir auch das neue Mavericks (10.9).

Weitere Informationen finden Sie unter Plattformvoraussetzungen für FireMonkey und Mac OS X-Anwendungsentwicklung.

In-App-Bezahldienste

In-App-Bezahldienste ermöglichen Ihnen, digitalen Inhalt direkt in Ihren iOS- und Android-Anwendungen zu verkaufen. FireMonkey enthält nun die Komponente TInAppPurchase, die das Hinzufügen von Unterstützung für die In-App-Bezahldienste von Google Play und iTunes erheblich vereinfacht.

Weitere Informationen finden Sie unter Hinzufügen von In-App-Bezahldiensten zu mobilen Apps.

Werbedienste

Werbedienste ermöglichen das Anzeigen von Werbung in Ihren iOS- und Android-Anwendungen, um damit Einnahmen zu erzielen. FireMonkey enthält nun die Komponente TBannerAd, die das Hinzufügen von Unterstützung für die Werbedienste AdMob und iAd erheblich vereinfacht.

Weitere Informationen finden Sie unter Hinzufügen von Werbediensten zu mobilen Apps.

Neue FireMonkey-Stile für Google Glass

FireMonkey enthält einen neuen Stil für das Google Glass-Gerät. Der Stil befindet sich in:

C:\Benutzer\Öffentlich\Öffentliche Dokumente\Embarcadero\Studio\14.0\Styles\Android\GoogleGlass.fsf

Der GoogleGlass.fsf-Stil ist für die Benutzeroberfläche und Auflösung von Google Glass optimiert.

Sie können GoogleGlass.fsf Ihren Google Glass-Anwendungen anhand der Schritte in dem folgenden Thema hinzufügen: Hinzufügen eines benutzerdefinierten Stils zu einer FireMonkey-Anwendung.

Weitere Informationen finden Sie unter Erstellen von Anwendungen für Google Glass.

GPU-Zeichenfläche kann auf Desktop-Plattformen aktiviert werden

Die GPU-Zeichenfläche wird standardmäßig auf mobilen Plattformen verwendet. Jetzt können Sie die GPU-Zeichenfläche auch unter Windows verwenden. Setzen Sie einfach im "initialization"-Abschnitt die globale Variable FMX.Types.GlobalUseGPUCanvas auf True, um die GPU-Zeichenfläche zu aktivieren.

Neben dem GPU-Rendering verwendet die GPU-Zeichenfläche eine Technologie zum Rendern von Text, die insbesondere bei der Textbearbeitung hilfreich ist.

Änderungen von FMX.Grid

TGrid wurde intern umgestaltet, um die Leistung und das Bildlaufverhalten zu verbessern. TGrid delegiert das Zeichen von Zellen an die Gitterspalten. Jede Spalte kann ihre Zellen mit der Standardzeichenmethode oder mithilfe des Interface IDrawableCell zeichnen.

Darüber hinaus ist es jetzt möglich, das benutzerdefinierte Zeichnen von Zellen mit Ereignissen aus TGrid zu verarbeiten. Für TCustomGrid gibt es zwei neue Zeichenereignisse: OnDrawColumnCell und OnDrawColumnHeader.

Verschiedene Eigenschaften für das Verhalten und das Erscheinungsbild wurden in einer Gittereigenschaft zusammengefasst: TCustomGrid.Options.

Weitere neue Funktionen:

Änderungen von FireMonkey-Aufzählungstypen

Namen von Aufzählungsbezeichnern haben jetzt keine Präfixe

In 1.14 werden Aufzählungstypen aus FireMonkey als bereichsabhängige Aufzählungen behandelt, und Bezeichnernamen in Aufzählungstypen werden neu deklariert, indem deren Präfixe entfernt werden.

In XE5 wurde TVKAutoShowMode beispielsweise mit dem Präfix vkas definiert:

TVKAutoShowMode = (DefinedBySystem, Never, Always); // 1.13
TVKAutoShowMode = (DefinedBySystem, Never, Always); // 1.14

Die Präfixe bewirkten, dass Namen von Aufzählungsbezeichnern im globalen Gültigkeitsbereich eindeutig waren. Ein weiteres Beispiel für bereichsabhängige Aufzählungen in FireMonkey ist TPaintStage.

Der alte Code mit alten Präfixen wie DefinedBySystem sollte weiterhin fehlerfrei compiliert werden. Der Compiler erzeugt aber für jeden Bezeichner mit einen Präfix eine Warnung, die Sie darüber informiert, dass ein obsoleter Aufzählungsbezeichner verwendet wird und Sie den korrekten Namen verwenden sollten.

Namen von Aufzählungs-Membern müssen mit dem Aufzählungsnamen qualifiziert werden

Die meisten FireMonkey-Units aktivieren die Compiler-Direktive [[Scoped Enums ({Delphi})|{$SCOPEDENUMS ON}]] (siehe auch Streng typisierte Aufzählungen (C++0x)). Die aktivierte Compiler-Direktive [[Scoped Enums ({Delphi})|{$SCOPEDENUMS ON}]] gibt an, dass alle in Aufzählungstypen definierten Bezeichner, die nach dieser Direktive (bis zur nächsten {$SCOPEDENUMS OFF}-Direktive) deklariert werden, nicht dem globalen Gültigkeitsbereich hinzugefügt werden. In diesem Fall müssen Sie zum Festlegen eines Members einer bereichsabhängigen Aufzählung den Member mit dem Typ der Aufzählung qualifizieren.

Beispielsweise ist der Aufzählungstyp TVKAutoShowMode jetzt wie folgt definiert:

{$SCOPEDENUMS ON}
...
TVKAutoShowMode = (DefinedBySystem, Never, Always);
...

Wegen der Direktive {$SCOPEDENUMS ON} müssen die TVKAutoShowMode-Bezeichner (DefinedBySystem, Never und Always) mit dem Aufzählungstypnamen wie folgt qualifiziert werden:

TVKAutoShowMode.DefinedBySystem

Neue und geänderte FireMonkey-API

Neue Funktion "SelectDirectory"

FMX.Dialogs.SelectDirectory wurde hinzugefügt.

Neue Methoden in FMX.WebBrowser.TWebBrowser

  • Für die Komponente TWebBrowser stellt FireMonkey nun die Methoden LoadFromStrings und EvaluateJavaScript bereit:

Weitere Informationen und Beispiele finden Sie unter Mobile-Tutorial: Verwenden von Webbrowser-Komponenten (iOS und Android).

Neue Datums-/Uhrzeit-Steuerelemente

FireMonkey enthält zwei neue Komponenten, die als Datums- und Uhrzeit-Steuerelemente für Ihre Anwendungen dienen können:

  • TDateEdit: Repräsentiert ein einzeiliges bearbeitbares Textfeld, das ein Datum enthält. Wenn Sie auf das Steuerelement TDateEdit klicken oder tippen, wird ein Datumsfenster angezeigt, in dem Sie das Datum auswählen können.
  • TTimeEdit: Repräsentiert ein einzeiliges bearbeitbares Textfeld, das eine angegebene Uhrzeit enthält. Wenn Sie auf das Steuerelement TTimeEdit klicken oder tippen, wird ein Uhrzeitfenster angezeigt, in dem Sie die Uhrzeit auswählen können.

Hinweis: TCalendarEdit ist veraltet. Verwenden Sie stattdessen TDateEdit.

Weitere Informationen und Beispiele finden Sie unter Mobile-Tutorial: Verwenden von Kalender-Komponenten zur Datumsauswahl (iOS und Android).


TPixelFormat (Aufzählung)

Die Unit FMX.PixelFormats wurde umgestaltet und ist jetzt Bestandteil von FMX.Types (wie die neue Aufzählung FMX.Types.TPixelFormat). Um eine höhere Konsistenz und eine bessere Lesbarkeit zu erzielen, unterscheiden sich die Werte der neuen Aufzählung TPixelFormat von denjenigen, die für FMX.PixelFormats.TPixelFormat verwendet wurden.

  • Auch Funktionen für die Umwandlung der beiden Pixelformate wurden in FMX.Types verschoben. Dazu zählen:
  • Im Folgenden finden Sie die Logik für die Interpretation der neuen FMX.Types.TPixelFormat-Aufzählungen:
    • Die Reihenfolge der Buchstaben in Aufzählungen entspricht der physischen Reihenfolge der Kanäle:
      • "R" bedeutet Rot.
      • "G" bedeutet Grün.
      • "B" bedeutet Blau.
      • "L" bedeutet Helligkeit (Luminanz).
      • "A" bedeutet Alpha.
    • Falls am Ende keine Zahl steht, hat jede Komponente 8 Bit.
      Beispiel: RGB bedeutet 8 Bit für rot, 8 Bit für grün und 8 Bit für blau.
    • Falls am Ende eine Zahl steht, gilt diese Bit-Anzahl für alle Kanäle.
      Beispiel: RGBA16 bedeutet 16 Bit für jeden der Kanäle rot, grün, blau und Alpha, also insgesamt 64 Bit (16 + 16 + 16 + 16).
    • Die Gesamtanzahl der Bits wird auf 8, 16, 32 oder 64 Bit aufgerundet.
      Beispiel: RGB (8 + 8 + 8 = 24) hat 32 Bit (aufgerundet auf 32).
    • Wenn am Ende ein "F" steht, handelt es sich um ein Gleitkomma-Pixelformat; ansonsten um ein Integer-Format.
      In FireMonkey wird normalerweise davon ausgegangen, dass alle Integer-Formate als vorzeichenloses "normalisiertes" Integer-Format behandelt werden (d. h. die niedrigsten und höchsten Integerwerte werden in Schattierern dem Bereich 0,0 - 1,0 zugeordnet).
    Ausnahmen zu den obigen Regeln:
    • BGR_565 ist ein 16-Bit-Format mit jeweils 5 Bit für den blauen und den roten Kanal und 6 Bit für den grünen Kanal.
    • BGR5_A1 ist ein 16-Bit-Format mit jeweils 5 Bit für den roten, grünen und blauen Kanal und 1 Bit für den Alpha-Kanal.
    • BGR10_A2 ist ein 32-Bit-Format mit jeweils 10 Bit für den roten, grünen und blauen Kanal und 2 Bit für den Alpha-Kanal.
    • RGB10_A2 entspricht dem obigen (aber die Reihenfolge der RGB-Kanäle ist umgekehrt).

TAlphaColorF (Record/Struktur)

  • System.UITypes.TAlphaColorF ist ein neuer Farbtyp, der jede R-, G-, B- und A-Komponente als Gleitkommawert behandelt.
    • Durch überladene Operatoren wird das Addieren, Subtrahieren und Multiplizieren mittels normaler Operationen wie der folgenden ermöglicht:
      FinalColor := (FirstColor + SecondColor) / 2
    • Früher beruhte die Pixel-Formatkonvertierung auf TVector3D, das als Farbe behandelt wurde, jetzt wird aber bei der Konvertierung TAlphaColorF verwendet.

Eigenschaften "TintColor" und "IconTintColor" für Schaltflächen, Listenansichten, Textschaltflächen und Symbolleisten

  • Für die Komponenten TButton und TSpeedButton stellt FireMonkey die Eigenschaften TintColor und IconTintColor bereit, die die Färbung einer Schaltfläche festlegen:
    • TintColor legt die Hintergrundfarbe von Schaltflächen fest.
    • IconTintColor legt die Farbe des Symbols auf mit Stilen versehenen Schaltflächen fest.
  • Für die Komponente TToolBar stellt FireMonkey die Eigenschaft TintColor bereit, die die Färbung einer Symbolleiste festlegt.
  • Für die Klasse TListItemTextButton stellt FireMonkey die Eigenschaft TintColor bereit, mit der Sie TListViewTextschaltflächen eine Färbung zuweisen können.

Weitere Informationen und Beispiele finden Sie in den folgenden Tutorials:

EnumControls kann Steuerelemente anhand von beliebigen Kriterien überspringen

FMX.Controls.TControl.EnumControls ist veraltet und wurde durch eine neuere Version mit demselben Namen ersetzt. Sie sollten in Ihrem Code die neue Version verwenden.

  • In früheren Releases wurden von der Prozedur TControl.EnumControls zwei Parameter erwartet:
    • Eine anonyme Prozedur, die bei der Suche für Steuerelemente aufgerufen werden muss.
    • Ein boolesches Argument, das bestimmt, ob nicht-sichtbare Steuerelemente bei der Suche übersprungen werden oder nicht.
    Sie konnten den Wert des Parameters <Done> in der anonymen Methode jederzeit ändern, um die Suche abzubrechen, und Sie konnten beim Aufruf von TControl.EnumControls <VisibleOnly> auf True setzen, um bei der Suche nicht-sichtbaren Steuerelementen untergeordnete Elemente zu überspringen.
  • In 1.14 können Sie mit der neuen Version von TControl.EnumControls Steuerelemente und deren untergeordnete Elemente bei der Suche überspringen und zwar nicht nur auf Basis der Sichtbarkeit dieser Steuerelemente, sondern auf Basis beliebiger Kriterien.
    TControl.EnumControls erwartet jetzt nur einen Parameter, eine anonyme Funktion. Diese Funktion erhält ein Steuerelement, und dessen Rückgabewert bestimmt, was als Nächstes auszuführen ist: die Suche wie gewöhnlich fortsetzen, die Suche fortsetzen, aber die dem erhaltenen Steuerelement untergeordneten Elemente überspringen, oder die Suche beenden.

Neue Member in der Klasse "FMX.TabControl.TTabControl"

Für die Komponente TTabControl stellt FireMonkey jetzt neue Methoden und Eigenschaften bereit:

  • Add fügt am Ende des Registerelements eine neue Registerkarte hinzu.
  • Insert fügt eine neue Registerkarte an der angegebenen Position ein.
  • Delete löscht eine Registerkarte aus dem Registerelement.
  • Next verschiebt die aktive Registerkarte zur nächsten sichtbaren Registerkarte.
  • Previous verschiebt die aktive Registerkarte zur vorherigen sichtbaren Registerkarte.


Änderungen der RTL

Verwenden von App-Tethering für geräteübergreifende Interaktionen zwischen Anwendungen

Die RTL stellt neue Komponenten bereit, über die Anwendungen mit anderen Anwendungen, die auf demselben oder auf einem Remote-Computer ausgeführt werden, interagieren können. Mit App-Tethering können Anwendungen:

Die RTL stellt passwortbasierte Sicherheit für App-Tethering-Verbindungen zwischen Anwendungen bereit. Mit diesem passwortbasierten System können Sie eine eigene Sicherheitsprozedur implementieren. Zum Beispiel können Sie:

  • Für Benutzer transparent festlegen, dass Anwendungen automatisch eine Verbindung zueinander herstellen, wenn sie sich gegenseitig erkennen.
  • Festlegen, dass Benutzer manuell ein Passwort in beide Anwendungen eingeben müssen, damit eine Kopplung hergestellt werden kann.

Die App-Tethering-Funktion ist nicht von einem speziellen Transport oder Protokoll abhängig. In 1.14 unterstützt die RTL Ethernet-Verbindungen zwischen Anwendungen in demselben lokalen Netzwerk (LAN), einschließlich von Anwendungen, die auf demselben Gerät ausgeführt werden. Sie können eigene Adapter implementieren, um neue Transporte und Protokolle mit der App-Tethering-API zu unterstützen.

Aktualisierungen von für TWebBrowser

Der unter Windows verfügbare Webbrowser (SHDocVw.TWebBrowser) wurde auf die neueste Version von Internet Explorer aktualisiert.

Änderungen für Datenbanken

Änderungen für FireDAC

  • TFDMemTable: Aufgrund von Entwurfszeiterweiterungen können Sie Daten aus binären, XML- und JSON-Dateien laden und speichern. Sie können TFDMemTable zur Entwurfszeit auch Daten aus anderen Datenmengen zuweisen.
  • Daten-Explorer: Der Daten-Explorer enthält nun einen FireDAC-Knoten, der das Ziehen und Ablegen von FireDAC-Komponenten auf Formularen, das Erstellten von FireDAC-Verbindungen im Daten-Explorer usw. ermöglicht.
  • Erweiterungen von Local SQL ermöglichen eine verbesserte Handhabung von Ad-hoc-Datenmengen:
    • TFDCustomLocalSQL und TFDLocalSQL enthalten API-Änderungen.
    • Eine einzelne TFDLocalSQL-Komponente kann mehrere Schemas verarbeiten:
      • Ein DS-Verbindungsobjekt kann nicht nur TObject, sondern auch IInterface sein.
      • DS-Speicherpunkte können int64 sein.
      • Automatisches Entfernen von temporären/Ausschussdatenmengen.
      • Registrierung von benutzerdefinierten Datenmengenadaptern.
  • Streaming-Refactoring und JSON-Serialisierungsformat:
    • Neue FireDAC.Stan.StorageBin/XML/JSON-Units.
    • Alle Serialisierungsformate wurden jetzt in die lose gekoppelte Unit FireDAC.Stan.StorageXxx verlagert.
    • TFDStanStorageXxxLink-Komponente für jedes Format hinzugefügt.
    • TFDResourceOptions.StorePrettyPrint zur Steuerung der XML/JSON-Formatierung hinzugefügt.
    • JSON-Serialisierungsformat wurde implementiert, indem sfJSON zu TFDResourceOptions.DefaultStoreFormat hinzugefügt wurde.
  • Neuer nativer FireDAC-Informix-Treiber:
    • Basiert auf dem Informix-ODBC-Treiber.
    • Unterstützt Win32 und Win64.
  • Die Verwendung der Komponente TFDPhysXxxxDriverLink ist jetzt optional:
    • Der Entwurfszeitcode von FireDAC fügt die erforderliche FireDAC-Treiberimplementierungs-Unit automatisch der "uses"-Klausel hinzu.
    • Mit der Komponente TFDPhysXxxxDriverLink können Sie eine DBMS-Client-Bibliothek einrichten.
    • FireDAC unterstützt Tabellenwertparameter von SQL Server 2008.
      • Nur der Parametertyp ptInput wird unterstützt (MSSQL-Einschränkung).
      • Tabellenwertparameter haben den Datentyp ftDataSet.
      • Für gespeicherte Prozeduren ist TFDParam.DataTypeName optional; für eine DML-Anweisung ist TFDParam.DataTypeName obligatorisch.
  • Steuerung der automatischen und persistenten Felder einer Datenmenge:

Beispiel für eine Informix-Verbindungsdefinition für FireDAC

    DriverID=Infx
    Server=ol_informix1170
    Database=sysuser
    User_Name=informix
    Password=mypwd
    MetaDefSchema=informix

Tabellentyp und gespeicherte Prozedur von SQL Server für FireDAC

     create type TVPType as table(Code integer, Name varchar(100), Notes varchar(max))
     go
     create table TVPTab(Code integer, Name varchar(100), Notes varchar(max))
     go
     create procedure TVPProc(@Items TVPType readonly)
     as
       delete from TVPTab;
       insert into TVPTab (Code, Name, Notes)
       select Code, Name, Notes
       from @Items;
     go

Verwendung von SQL Server-TVP in Object Pascal für FireDAC

     // Automatisches Abrufen und Konfigurieren von Prozedurmetadaten
     FDStoredProc1.StoredProcName := 'TVPProc';
     FDStoredProc1.Prepare;
     FDStoredProc1.Params[1].AsDataSet.AppendRecord([1, 'str1', 'long value 1']);
     FDStoredProc1.Params[1].AsDataSet.AppendRecord([2, 'str2', 'long value 2']);
     FDStoredProc1.Params[1].AsDataSet.AppendRecord([3, 'str3', 'long value 3']);
     FDStoredProc1.ExecProc;

     // Manuelle Prozedurkonfiguration
     FDStoredProc1.FetchOptions.Items := FDStoredProc1.FetchOptions.Items - [fiMeta];
     FDStoredProc1.StoredProcName := 'TVPProc';
     FDStoredProc1.Params.Clear;
     FDStoredProc1.Params.Add('@RETURN_VALUE', ftInteger, -1, ptResult);
     oDS := TFDMemTable.Create(nil);
     oDS.FieldDefs.Add('Code', ftInteger);
     oDS.FieldDefs.Add('Name', ftString);
     oDS.FieldDefs.Add('Notes', ftMemo);
     with FDStoredProc1.Params.Add('@Items', ftDataSet, -1, ptInput) do begin
       DataTypeName := 'TVPType';
            AsDataSet := oDS;
          end;
     FDStoredProc1.Params[1].AsDataSet.AppendRecord([1, 'str1', 'long value 1']);
     FDStoredProc1.Params[1].AsDataSet.AppendRecord([2, 'str2', 'long value 2']);
     FDStoredProc1.Params[1].AsDataSet.AppendRecord([3, 'str3', 'long value 3']);
     FDStoredProc1.ExecProc;

     // Ausführung der SQL-Abfrage:
     FDQuery1.SQL.Text := 'insert into TVPTab (Code, Name, Notes) select Code, Name, Notes from :t';
     oDS := TFDMemTable.Create(nil);
     oDS.FieldDefs.Add('Code', ftInteger);
     oDS.FieldDefs.Add('Name', ftString);
     oDS.FieldDefs.Add('Notes', ftMemo);
     with FDQuery1.Params[0] do begin
       DataTypeName := 'TVPType';
       AsDataSet := oDS;
     end;
     FDQuery1.Params[0].AsDataSet.AppendRecord([1, 'str1', 'long value 1']);
     FDQuery1.Params[0].AsDataSet.AppendRecord([2, 'str2', 'long value 2']);
     FDQuery1.Params[0].AsDataSet.AppendRecord([3, 'str3', 'long value 3']);
     FDQuery1.ExecSQL;

Push-Benachrichtigungen für iOS und Android

Das REST BaaS-Framework (Backend As A Service) ermöglicht die Verwendung der BaaS-Provider Kinvey oder Parse in Ihren mobilen Apps, um:

  • Objekte zu erstellen, abzurufen, zu aktualisieren und zu löschen
  • Benutzer zu registrieren, anzumelden, zu ermitteln, zu aktualisieren und zu löschen
  • Dateien oder Streams hochzuladen, herunterzuladen und zu löschen
  • Objekte und Benutzer abzufragen
  • Push-Benachrichtigungen zu senden
  • Push-Benachrichtigungen zu abonnieren und auf einem Gerät zu empfangen

Die REST.Backend API-Units ermöglichen die Ausführung von Kinvey- oder Parse-REST-API-Methoden. In diesen Units sind Methoden deklariert, die direkt der REST-API zugeordnet sind, die auf den Kinvey- und Parse-Websites dokumentiert ist. Mit diesen Units können Sie Code zum Aufrufen der REST-API-Endpunkte in Parse oder Kinvey schreiben.

Hinweise:
  • Der mit den REST.Backend API-Units geschriebene Code ist spezifisch für Kinvey oder Parse. Beispielsweise würden Sie entweder REST.Backend.KinveyProvider oder REST.Backend.ParseProvider verwenden.
  • Unser BaaS-Framework basiert auf unserem REST-API-Framework. Um Android Push-Benachrichtigungen zu aktivieren, wird die Unterstützung durch Google Cloud Messaging (GCM) benötigt, damit die Push-Benachrichtigungen empfangen werden können. Kinvey unterstützt Google Cloud Messaging in seiner REST-API, aber Parse unterstützt Google Cloud Messaging derzeit nicht in seiner REST-API:
    • Für Android müssen Sie Kinvey verwenden.
    • Für iOS können Sie entweder Parse oder Kinvey verwenden.

Die REST.Backend-Komponenten unterstützen BaaS-Dienste auf eine allgemeine Art und Weise. Der mit diesen Komponenten geschriebene Code ist nicht spezifisch für Kinvey oder Parse. Wenn Sie beispielsweise mit der Komponente TBackendStorage ein Objekt erstellen, ist der Code für ein Kinvey-Objekt derselbe wie für ein Parse-Objekt.

Die Anwendung muss eine Provider-Komponente, wie TKinveyProvider oder TParseProvider mit den Verbindungsinformationen für den Cloud-Dienst enthalten. Legen Sie zum Verbinden einer Provider-Komponente mit einer Dienstkomponente die Eigenschaft "Provider", wie TBackendStorage.Provider, fest.

Um Push-Benachrichtigungen zu empfangen, müssen Sie den Messaging-Dienst (APS oder GCM), das Gerät, den Cloud-Dienst (Kinvey oder Parse) und die Appmethod-Anwendung konfigurieren.

Anleitungen zum Konfigurieren und Verwenden von Remote-Benachrichtigungen mit Ihren mobilen Apps finden Sie unter Mobile-Tutorial: Verwenden von Remote-Mitteilungen (iOS und Android).

Unterstützung für den Apache-Server hinzugefügt

DataSnap und WebBroker unterstützen nun das Erstellen von Apache-Modulen in den folgenden Experten:

Änderungen der IDE für 1.14

Entwurfsgerät "Google Glass" zum Formular-Designer hinzugefügt

Der Designer für mobile Formulare stellt jetzt ein Google Glass-Entwurfsgerät bereit:

GoogleGlassDesignTimeDevice.png

Weitere Informationen finden Sie unter Erstellen von Anwendungen für Google Glass.

Neue Symbole in der IDE

Im gesamten Produkt wurden Symbole aktualisiert.

Beispielsweise wurde das Symbol, das die Projektgruppe in der Projektverwaltung und auf anderen Seiten in der IDE repräsentiert, von ProjGroup.bmp in ProjGroupNew.png geändert.

Bitte beachten Sie, dass in einigen Teilen der Dokumentation die Symbole noch nicht aktualisiert wurden.

Neue Optionen im Bereitstellungs-Manager

  • Mit der neuen Option Überschreiben können Sie Dateien auswählen, die Sie nicht bereitstellen möchten, insbesondere, um das Überschreiben von Dateien auf dem Zielgerät zu vermeiden. Die Option Überschreiben ist standardmäßig auf Immer gesetzt. Um die Option in Nie zu ändern, klicken Sie im Symbolleistenmenü des Bereitstellungs-Managers auf das neue Überschreiben ChangeOverwriteValueforSelectedItems.png-Symbol.
  • Mit der neuen Option Hinzugefügte Dateien beibehalten können Sie Dateien beibehalten, die Sie Ihrem Projekt manuell hinzugefügt haben, nachdem Sie die Konfiguration auf die Standardoptionen für die ausgewählte Plattform zurückgesetzt haben. Die Option Hinzugefügte Dateien beibehalten ist standardmäßig aktiviert. Sie können diesen Wert durch Klicken auf das Symbol Zurücksetzen DMgrRevert.png ändern. Das Dialogfeld Bitte geben Sie die Aktion an wird geöffnet, in dem Sie die Option Hinzugefügte Dateien beibehalten aktivieren oder deaktivieren können.
Keepaddedfiles.png

Änderungen des SDK-Managers für Android-Plattformen

  • Die Eigenschaften für eine Android-SDK-Version sind jetzt auf drei verschiedenen Registerkarten verteilt: SDK, NDK und Java. Die Felder SDK, NDK und Java befinden sich auf der entsprechenden Registerkarte, daher ist es jetzt beispielsweise einfacher, eine SDK-Version hinzuzufügen oder zu ändern.
  • Die Registerkarte NDK enthält zwei neue Felder, über die Sie NDK-Bibliothekspfade für die beiden Personalities hinzufügen können:
    • Bibliothekspfad für das Appmethod C++-NDK
    • Bibliothekspfad für das Object Pascal-NDK
    Wenn Sie auf die Ellipsen-Schaltfläche [...] einer der beiden Pfadfelder klicken, wird das Dialogfeld Verzeichnisse angezeigt, in dem Sie nach Pfaden suchen sowie Pfade hinzufügen und verwalten können.

NDKLibraryPaths.png

Geänderte Pfadnamen

Die Namen für den Appmethod-Installationspfad (in "Programm (x86)") und für den Dokumentpfad (in "/Benutzer/Dokumente") wurden wie folgt geändert:

    • 1.14: C:\Programme (x86)\Embarcadero\Studio\14.0
  • InterBase-Redistributionspfad (($IBREDISTDIR)-Umgebungsvariable):
    • 1.13: C:\Benutzer\Öffentlich\Öffentliche Dokumente\InterBase\redist\InterBaseXE3
    • 1.14: C:\Benutzer\Öffentlich\Öffentliche Dokumente\Embarcadero\InterBase\redist\InterBaseXE3
  • Dokumentpfad (in dem sich die Ordner für die Beispiele, Stile und Plattform-SDKs befinden):
    • 1.13: C:Benutzer\Öffentlich\Öffentliche Dokumente\Embarcadero\Appmethod\13.0\
    • 1.14: C:Benutzer\Öffentlich\Öffentliche Dokumente\Embarcadero\Studio\14.0\

Die korrekten neuen Pfade werden in der gesamten 1.14-Hilfe verwendet.

Neue Menüeinträge und Ergebnisfenster für "Referenzen suchen/Definitionen suchen" in C++

Referenzen suchen/Definitionen suchen für C++ wird mit der C++-Indizierungsfunktion aktiviert. Die C++-Indizierung wird von unseren Clang-basierte C++-Compilern|Clang-basierten C++-Compilern nicht unterstützt (d. h., für die Zielplattformen 64-Bit-Windows, iOS und Android).

Zum Aktivieren der C++-Indizierung aktivieren Sie die Option Indexdateien für "Definitionen und Referenzen", die sich hier befindet:

Nach der Indizierung stehen die Befehle des Menüs C++-Suche im Kontextmenü des Quelltext-Editors zur Verfügung.

Die neuen Kontextmenübefehle im Quelltext-Editor sind:

Auf die vier neuen Ergebnisfenster für die C++-Indizierungsfunktion können Sie über die folgenden Menübefehle zugreifen:

Änderungen der Projektoptionen für 1.14

UseMSBuildExternally.png

Neue Seite "Ausrichtung" für mobile Apps Number1.png

Die Ausrichtungsoptionen wurden aus der Seite Anwendung in eine eigene Seite verschoben. Mit Projekt > Optionen > Anwendung > Ausrichtung können Sie auf die neue Seite Ausrichtung zugreifen.

New Option on the Object Pascal Compiler Number2.png

Mit der neuen Option MSBuild extern für die Compilierung verwenden auf der Seite Object Pascal-Compiler können Sie festlegen, dass ein Projekt außerhalb der IDE mit MSBuild erzeugt wird. Diese Option ist standardmäßig auf False gesetzt. Wählen Sie Projekt > Optionen | Object Pascal-Compiler, um diese Option zu aktivieren.

Diese neue Option behebt ein Problem aufgrund von zu wenig Arbeitsspeicher, das auftreten kann, wenn Sie extrem große Projekte mit Anwendungen und Bibliotheken erzeugen.

Neuer Schlüssel auf der Seite "Versionsinformationen" für Android

Das neue hardwareAccelerated-Schlüssel-Wert-Paar auf der Seite Versionsinformationen aktiviert die Hardwarebeschleunigung für Ihre gesamte Anwendung. Dieses Schlüssel-Wert-Paar fügt dem <application>-Tag in der Datei AndroidManifest.xml das Attribut hardwareAccelerated hinzu; dessen Wert ist per Vorgabe True.

HardwareAccelerated.png

Mit Projekt > Optionen > Versionsinformationen können Sie auf die Seite Versionsinformationen zugreifen.

Neue Optionen für den C++-Linker

  • Für alle mobilen Plattformen:
    • .map-Symboldatei erzeugen: Diese Option erzeugt in .\OutputFolder\ProjectName.map eine MAP-Datei.
    • Temporäre .lnk-Linker-Datei nach Linken entfernen: Mit dieser Option wird die temporäre Linker-Datei aus .\OutputFolder\ProjectName.lnk entfernt.
  • Für die Plattform "iOS-Gerät":
    • Mit regulären Ausdrücken verknüpfen: Diese Option linkt mit der Bibliothek der regulären Ausdrücke.

Mit Projekt > Optionen | C++-Linker können Sie auf die Seite C++-Linker zugreifen.

Start-Befehle stellen neuen "-cleaninstall"-Parameter für mobile Plattformen bereit

Das Standardverhalten der Start-Befehle wurde für mobile Projekte sowohl für Start als auch für Ohne Debugger ausführen geändert. Wenn Sie eine Anwendung auf einem mobilen Gerät ausführen, auf dem eine zuvor installierte Anwendung mit demselben Package-Namen enthalten ist:

  • Deinstallierten die Start-Befehle früher die Daten- und Zwischenspeicherverzeichnisse zusätzlich zu der ausführbaren Datei.
  • Deinstallieren die Start-Befehle jetzt nur die ausführbare Datei und belassen die Daten- und Zwischenspeicherverzeichnisse auf der mobilen Plattform.

Sie können jedoch festlegen, dass das frühere Verhalten verwendet werden soll (alle bereits vorhandenen Daten- und Zwischenspeicherverzeichnisse sollen beim Ausführen einer Anwendung auf einem mobilen Gerät gelöscht werden). Wählen Sie dazu Start > Parameter, und fügen Sie den folgenden Parameter hinzu:

-cleaninstall

Weitere Informationen finden Sie unter "Ausführen der Anwendung mit bereinigten Daten- und Zwischenspeicherordnern" in:

Beachten Sie zudem, dass Sie beim Ändern der Plattformkonfiguration für ein bestimmtes Projekt auch den Parameter -cleaninstall unter Start > Parameter ändern müssen; ansonsten könnten Sie einen Fehler erhalten.

Änderungen der Berechtigungsliste für iOS und OS X

Die Seite Berechtigungsliste wurde für iOS überarbeitet. Mit Projekt > Optionen > Berechtigungsliste können Sie auf die Berechtigungsliste zugreifen.

Außer auf der Seite Berechtigungsliste für iOS können Sie nun die Berechtigungsdateien für iOS und OSX auch manuell bearbeiten. Wenn Sie das erste Mal eine Anwendung für die Zielplattform "iOS" oder "Mac OS X" erzeugen, wird Ihrem Projektordner eine <Entitlement.TemplateiOS.xml>- oder <Entitlement.TemplateOSX32.xml>-Vorlage hinzugefügt. Sie können Berechtigungsschlüssel für all Ihre Projekte auch als Ausgangspunkt vordefinieren.

Unter Anpassen der Berechtigungsliste finden Sie weitere Informationen.

Änderungen der Windows-API für 1.14

DirectX 11 wird in 1.14 unterstützt

Winapi wurde um neue Units erweitert, die Object Pascal-Anwendungen Zugriff auf die DirectX 11-API bieten:

  • Winapi.D3D11
  • Winapi.D3D11sdklayers
  • Winapi.D3D11Shader
  • Winapi.D3DCommon

Hilfe zur Verwendung von DirectX finden Sie im Leitfaden DirectX Graphics and Gaming.

OpenGL 4.3 und früher wird in 1.14 unterstützt

Die neue Unit "Winapi.OpenGLext" stellt die Unterstützung für OpenGL, Versionen 1.2 bis 4.3 bereit. Nehmen Sie diese Unit in den uses-Abschnitt auf, und rufen Sie InitOpenGLext auf, um die neuesten OpenGL-Features zu verwenden:

InitOpenGLext;

"Winapi.OpenGL", die Unit, die die Unterstützung für OpenGL 1.1 bereitstellt, wurde aktualisiert und unterstützt jetzt die gesamte OpenGL 1.1-API.

Hilfe zur Verwendung von OpenGL finden Sie in den folgenden Themen:

Umgestaltung von Bibliotheken

Neuerungen in der Hilfe

Siehe auch