Nouveautés

De Appmethod Topics
Aller à : navigation, rechercher

Sommaire

Nouveautés de Appmethod 1.14

C++ a été ajouté à Appmethod

Appmethod 1.14 offre maintenant la prise en charge du langage de programmation C++ :

  • Appmethod C++ supporte les mêmes plates-formes cible que Object Pascal, à une exception près : C++ ne supporte pas le Simulateur iOS.
Pour plus d'informations, voir Applications multi-périphériques.

Le comptage automatique des références (ARC) est activé pour C++ Android

  • C++ Android utilise le comptage automatique des références (ARC) par mesure de compatibilité avec Object Pascal Android.
    Toute la gestion relative à ARC s'effectue dans le compilateur C++ Android. Vous n'avez donc pas à procéder différemment pour pouvoir travailler dans l'environnement ARC C++ Android. Votre code C++ peut toujours utiliser une syntaxe avec pointeur pour une instance de classe Object Pascal. Le compilateur C++ Android traite ces pointeurs sous forme de pointeurs spéciaux, ce qui fait que ni les déclarations ni leur usage ne doivent changer.
  • Pour plus d'informations, voir Comptage automatique des références dans C++.

Les packages pour Windows 64 bits sont supportés par C++

C++ supporte la production de packages pour Windows 64 bits. Le compilateur C++ produit des fichiers .bpl pour Win64. Notez que Appmethod C++ ne produit pas de dylibs pour le Mac, ou de packages pour les plates-formes iOS et Android. Pour ces plates-formes, il est possible d'utiliser des bibliothèques statiques.

Différences entre les packages Win32 et Win64 :

  • Pour Win64, le compilateur exporte les éléments de code marqués comme PACKAGE s'ils sont définis dans l'unité de traduction en cours. Pour les classes, si un non membre est défini, la classe est exportée. Si aucune définition n'est vue, le compilateur traite l'élément de code tel qu'il a été importé. Ce comportement est différent de celui de Win32.
  • Vous devez utiliser PACKAGE pour Win32 et Win64, mais Win64 n'effectue l'exportation que si une définition est présente. Cette exigence s'applique aux variables, fonctions et classes qui sont censées être exposées aux consommateurs du Package.

Exemple :

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);

Exigences pour les packages Win64 :

  • Pour exporter une classe de composant à partir d'un package, assurez-vous qu'il existe au moins un membre non inline pour chaque composant (l'expert Composant > Nouveau composant le fait pour vous).
  • Si vous avez précédemment défini l'option Répertoire de sortie des packages pour produire un package Win32, vous devez changer le chemin d'accès à votre projet Win64 sur la page Outils > Options > Options d'environnement > Options C++ > Chemins et répertoires (C++) pour que votre package Win32 ne soit pas écrasé.

Directives de compilation Object Pascal HPPEMIT pour les apps mobiles

Vous pouvez maintenant utiliser les directives ${HPPEMIT} pour lier et générer des déclarations d'espace de nommage C++ :

  • {$HPPEMIT NOUSINGNAMESPACE} supprime la génération de "using namespace <nom de l'unité>;".
  • {$HPPEMIT LINKUNIT} remplace #pragma link pour les plates-formes cible des périphériques Android et iOS.

Pour plus d'informations, voir $HPPEMIT.

Modifications relatives au compilateur C++ pour 1.14

Les déclarations requièrent maintenant un type (uniquement avec les compilateurs C++ basés sur Clang)

  • Nos compilateurs C++ basés sur Clang (BCC64, BCCIOSARM et BCCAARM) appliquent désormais l'obligation de définir un type pour les déclarations dans C++. Cela signifie que vous ne pouvez pas utiliser un "int" implicite dans les déclarations. Ainsi, un message d'erreur est renvoyé si WinMain n'a pas de type de retour comme dans :
WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{
  ...
}
Le code ci-dessus génère désormais l'erreur suivante :
 C++ requires a type specifier for all declarations
Pour résoudre cette erreur, modifiez le code de la manière suivante :
int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{
  ...
}

Les définitions de tableaux ouverts utilisent maintenant Data_High au lieu de Data_Size

Pour illustrer clairement que le second paramètre dans une définition de tableau ouvert correspond à la taille du tableau moins 1, le paramètre Data_Size a été renommé Data_High.

Pour plus d'informations, voir "Support des tableaux ouverts" dans Tableaux ouverts.

Le lieur LD C++ désactive la génération du fichier .map

L'option Générer des fichiers symbole .map est maintenant désactivée pour iOS et Android. Si vous devez générer un fichier .map, accédez à Projet > Options > Lieur C++ et sélectionnez Générer des fichiers symbole .map.

Fonctionnalité Rechercher les définitions et les références

Les compilateurs C++ basés sur Clang (BCC64, BCCIOSARM et BCCAARM) supportent désormais la nouvelle fonctionnalité Rechercher les définitions et les références. Appmethod fournit les commandes Chercher (C++) sur le menu contextuel lorsque vous cliquez avec le bouton droit sur un identificateur dans l'éditeur de code. Selon le type d'identificateur, ces commandes renvoient des informations variées qui augmentent votre productivité. Par exemple, vous pouvez obtenir toutes les références à l'identificateur sélectionné dans le projet entier, la déclaration de l'identificateur, les classes de base ou dérivées (lorsque l'identificateur fait référence à une classe), etc.

Cette fonctionnalité est présentée de manière plus détaillée dans "Changements de l'EDI relatifs à 1.14" (#Nouvelles entrées de menu et nouveaux volets de résultats pour la fonctionnalité Rechercher les références / Rechercher les définitions (C++)).

Pour plus d'informations, voir Rechercher les définitions et les références (C++).

Modifications du compilateur Object Pascal

La directive $LIBVERSION du compilateur n'attache plus les données de version de la bibliothèque après l'extension de fichier, comme .dll, .dylib, .bpl, .map, .rsm, et ainsi de suite. A la place, les données de version de la bibliothèque sont insérées après la chaîne $LIBSUFFIX, si elle est présente, et après le nom du fichier, mais avant l'extension générée.

Ces directives ($LIBPREFIX, $LIBSUFFIX et $LIBVERSION) peuvent toutes être définies sur la page Projet > Options > Description.

Modifications relatives à FireMonkey

Détection de l'architecture de périphérique Android non supportée

Lorsque vous lancez une application FireMonkey sur un périphérique ayant une architecture CPU que Appmethod ne supporte pas, l'application affiche maintenant un message d'erreur sur le périphérique :

Application not supported by this device 

Pour implémenter cette fonctionnalité, le Gestionnaire de déploiement inclut trois petites bibliothèques de code natives dans votre package Android .apk. Ces bibliothèques sont construites pour les architectures qui ne sont pas supportées par les applications FireMonkey :

  • ARMv6
  • Intel x86
  • MIPS

Le code de ces trois bibliothèques affiche le message d'erreur.

Vous pouvez voir ces bibliothèques natives dans le Gestionnaire de déploiement (voir les lignes en surbrillance) :

DeplyMgrAndroidDetectors.png

Important : Lors de la construction de votre application pour la publication du magasin Google Play, vous devez désactiver ces bibliothèques supplémentaires en les décochant dans le Gestionnaire de déploiement. Cela empêche leur inclusion dans votre package .apk et permet au magasin Google Play de déterminer correctement les exigences de périphérique pour votre application.

Par exemple :

DeployMgrWithDisabledARMEABIlib.png
Remarque : Les périphériques s'exécutant sous Android 4.0.x (notamment certaines tablettes Kindle Fire) peuvent signaler incorrectement que l'application n'est pas compatible (en raison d'un bogue dans le chargeur de bibliothèque Android 4.0.x). Pour résoudre ce problème, installez une version plus récente d'Android sur le périphérique ou retirez la bibliothèque native ARMv6 (armeabi) du déploiement, en décochant la bibliothèque armeabi dans le Gestionnaire de déploiement, comme illustré dans l'image précédente.

Pour obtenir la liste des périphériques Android supportés, voir Périphériques Android supportés pour le développement d'applications.

Fin du support pour Mac OS X Lion (10.7)

Nous continuons à supporter Mountain Lion (10.8) et nous avons ajouté le support du nouveau système d'exploitation Mavericks (10.9).

Pour plus d'informations, voir Prérequis de plate-forme FireMonkey et Développement d'applications Mac OS X.

Services de paiement in-app

Les services de paiement in-app vous permettent de vendre du contenu numérique directement depuis vos applications iOS et Android. FireMonkey fournit désormais un composant, TInAppPurchase, qui facilite l'ajout de la prise en charge des services de paiement in-app Google Play et iTunes.

Pour plus d'informations, voir Ajout des paiements in-app à vos apps mobiles.

Services publicitaires

Les services publicitaires vous permettent d'afficher des annonces publicitaires dans vos applications iOS et Android afin d'obtenir des revenus. FireMonkey fournit maintenant un composant, TBannerAd, qui facilite l'ajout de la prise en charge des services publicitaires AdMob et iAd.

Pour plus d'informations, voir Ajout de publicités à vos apps mobiles.

Nouveau style FireMonkey pour Google Glass

FireMonkey fournit un nouveau style pour le périphérique Google Glass. Le style est disponible à cet emplacement :

C:\Users\Public\Documents\Embarcadero\Studio\14.0\Styles\Android\GoogleGlass.fsf

Le style GoogleGlass.fsf est optimisé pour l'interface utilisateur et la résolution de Google Glass.

Vous pouvez ajouter GoogleGlass.fsf à vos applications Google Glass, en suivant les étapes dans Ajout d'un style personnalisé à votre application FireMonkey.

Pour plus d'informations, voir Création d'applications pour Google Glass.

Possibilité d'activer le canevas GPU sur les plates-formes de bureau

Le canevas GPU est utilisé par défaut sur les plates-formes mobiles. Vous pouvez à présent utiliser le canevas GPU sur Windows également. Pour activer le canevas GPU, définissez simplement la variable globale FMX.Types.GlobalUseGPUCanvas sur True dans la section initialization.

Outre le rendu GPU, le canevas GPU utilise une technologie de rendu de texte qui est particulièrement utile lors de la gestion du texte.

Modifications de FMX.Grid

TGrid a été refactorisé en interne afin d'améliorer les performances et son comportement de défilement. TGrid délègue le dessin des cellules aux colonnes de la grille. Chaque colonne peut dessiner ses cellules en utilisant la méthode de dessin par défaut ou en utilisant l'interface IDrawableCell.

En outre, il est maintenant possible de gérer le dessin personnalisé de cellules en utilisant les événements de TGrid. Il existe deux nouveaux événements de dessin sur TCustomGrid : OnDrawColumnCell et OnDrawColumnHeader.

Plusieurs propriétés de comportement et d'apparence sont réunies dans une seule propriété de grille : TCustomGrid.Options.

Autres nouvelles fonctionnalités :

Modifications des types énumérés FireMonkey

Les noms d'identificateur d'énumération n'ont désormais plus de préfixe

Dans 1.14, les types énumérés FireMonkey sont gérés en tant qu'énumérations de portée, et les noms d'identificateur dans les types énumérés sont redéclarés, ce qui supprime leurs préfixes.

Par exemple dans XE5, TVKAutoShowMode était défini avec le préfixe vkas :

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

Les préfixes des identificateurs d'énumération rendaient les noms uniques dans la portée globale. Il existe d'autres exemples d'énumérations de portée dans FireMonkey, comme TPaintStage.

Votre code existant, qui contient d'anciens identificateurs préfixés comme DefinedBySystem, devrait se compiler sans erreur. Cependant, pour tout identificateur préfixé, le compilateur génère un avertissement vous informant que vous utilisez un identificateur d'énumération obsolète et que vous devez le remplacer par le nom correct.

Les noms de membres d'une énumération doivent être qualifiés avec le nom de l'énumération

La plupart des unités FireMonkey activent la directive du compilateur {$SCOPEDENUMS ON} (voir aussi Enumérations fortement typées (C++0x)). L'activation de la directive {$SCOPEDENUMS ON} du compilateur signifie que tous les identificateurs définis dans les types énumérés déclarés après cette directive (jusqu'à la directive {$SCOPEDENUMS OFF} la plus proche) ne sont pas ajoutés à la portée globale. Dans ce cas, vous devez qualifier le membre avec le type de l'énumération pour spécifier un membre d'une énumération de portée.

Par exemple, le type énuméré TVKAutoShowMode est maintenant défini comme suit :

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

A cause de la directive {$SCOPEDENUMS ON}, les identificateurs TVKAutoShowMode (DefinedBySystem, Never et Always) doivent être qualifiés avec le nom du type énuméré, par exemple :

TVKAutoShowMode.DefinedBySystem

Modifications et nouveautés dans l'API FireMonkey

Nouvelle fonction SelectDirectory

FMX.Dialogs.SelectDirectory a été ajouté.

Nouvelles méthodes dans FMX.WebBrowser.TWebBrowser

  • Pour le composant TWebBrowser, FireMonkey fournit maintenant les méthodes LoadFromStrings et EvaluateJavaScript :

Pour plus d'informations et des exemples, voir Tutoriel mobile : Utilisation du composant Navigateur Web (iOS et Android).

Nouveaux contrôles date/heure

FireMonkey fournit deux nouveaux composants qui servent de contrôles date et heure pour vos applications :

  • TDateEdit : représente une zone de texte modifiable à ligne unique contenant une date. Lorsque vous cliquez ou appuyez sur le contrôle TDateEdit, il affiche un sélecteur qui vous permet de sélectionner une date.
  • TTimeEdit : représente une zone de texte modifiable à ligne unique contenant une heure spécifiée. Lorsque vous cliquez ou appuyez sur le contrôle TTimeEdit, il affiche un sélecteur qui vous permet de sélectionner une heure.

Remarque : TCalendarEdit est devenu obsolète. Utilisez plutôt TDateEdit.

Pour plus d'informations et des exemples, voir Tutoriel mobile : Utilisation d'un composant Calendrier pour sélectionner une date (iOS et Android).


Enumération TPixelFormat

L'unité FMX.PixelFormats a été refactorée et fait maintenant partie de FMX.Types (comme la nouvelle énumération FMX.Types.TPixelFormat). Par souci de cohérence et de clarté, les valeurs du nouveau TPixelFormat sont différentes des valeurs qui étaient utilisées pour FMX.PixelFormats.TPixelFormat.

  • Les fonctions permettant de convertir différents formats de pixels ont été déplacées dans FMX.Types. Cela comprend :
  • L'interprétation des nouvelles énumérations FMX.Types.TPixelFormat s'effectue selon la logique suivante :
    • L'ordre des lettres dans les énumérations correspond à l'ordre physique des canaux :
      • "R" signifie Red (rouge).
      • "G" signifie Green (vert).
      • "B" signifie Blue (bleu).
      • "L" signifie Luminance (luminosité).
      • "A" signifie Alpha.
    • S'il n'y a aucun nombre à la fin, chaque composant a 8 bits.
      Exemple : RGB signifie 8 bits pour rouge, 8 bits pour vert et 8 bits pour bleu.
    • S'il y a un nombre à la fin, ce nombre de bits correspond à chacun des canaux.
      Exemple : RGBA16 signifie 16 bits pour chacun des canaux rouge, vert, bleu et alpha, ce qui fait un total de 64 bits (16 + 16 + 16 + 16).
    • Ce nombre total de bits est arrondi à la valeur supérieure sur 8, 16, 32 ou 64 bits.
      Exemple : RGB (8 + 8 + 8 = 24) comporte 32 bits (arrondi à 32).
    • S'il y a un "F" à la fin, c'est un format de pixel en virgule flottante, sinon c'est une valeur entière.
      Dans FireMonkey, nous supposons typiquement que tous les formats en valeur entière sont traités comme des formats "normalisés" de valeurs entières non signées (c'est-à-dire que les valeurs entières les plus basses et les plus élevées sont mappées sur des intervalles de 0.0 à 1.0 dans les shaders).
    Les exceptions aux règles ci-dessus sont les suivantes :
    • BGR_565 est un format 16 bits avec 5 bits pour les canaux bleu et rouge, et 6 bits pour le canal vert.
    • BGR5_A1 est un format 16 bits avec 5 bits pour chacun des canaux rouge, vert et bleu, et 1 bit pour le canal Alpha.
    • BGR10_A2 est un format 32 bits avec 10 bits pour chacun des canaux rouge, vert et bleu, et 2 bits pour le canal Alpha.
    • RGB10_A2 signifie la même chose que ci-dessus (mais l'ordre physique des canaux RGB est inversé).

Enregistrement/Struct TAlphaColorF

  • System.UITypes.TAlphaColorF est un nouveau type de couleur qui traite chaque composant R, G, B et A comme des flottants.
    • Les opérateurs surchargés autorisent l'ajout, la soustraction et la multiplication des couleurs à l'aide d'opérations normales, comme :
      FinalColor := (FirstColor + SecondColor) / 2
    • Auparavant, la conversion du format des pixels reposait sur TVector3D, qui était traité comme une couleur. Désormais, la conversion utilise TAlphaColorF.

Propriétés TintColor et IconTintColor dans les boutons, les boutons texte des TListView et les barres d'outils

  • Pour les composants TButton et TSpeedButton, FireMonkey fournit les propriétés TintColor et IconTintColor qui déterminent la nuance d'un bouton :
    • TintColor spécifie la couleur d'arrière-plan du bouton.
    • IconTintColor spécifie la couleur de l'icône du bouton pour les boutons stylés.
  • Pour le composant TToolBar, FireMonkey fournit la propriété TintColor qui détermine la nuance d'une barre d'outils.
  • Pour la classe TListItemTextButton, FireMonkey fournit la propriété TintColor qui vous permet d'appliquer une nuance aux boutons texte TListView.

Pour plus d'informations et des exemples, voir les tutoriels suivants :

Les EnumControls peuvent ignorer les contrôles selon n'importe quel critère

FMX.Controls.TControl.EnumControls est maintenant obsolète et a été remplacé par une version plus récente du même nom. Vous devez commencer à utiliser la nouvelle version dans votre code.

  • Dans les releases précédentes, la procédure TControl.EnumControls attendait deux paramètres :
    • Une procédure anonyme devant être appelée lors de la visite d'un contrôle pendant la recherche.
    • Un argument booléen déterminant si les contrôles non visibles devaient être ignorés ou non lors de la recherche.
    Il était possible de changer la valeur du paramètre <Done> dans la méthode anonyme à tout moment pour abandonner la recherche, et vous pouviez définir <VisibleOnly> sur True lors de l'appel à TControl.EnumControls pour ignorer les enfants des contrôles non visibles pendant la recherche.
  • Dans 1.14, la nouvelle version de TControl.EnumControls vous permet d'ignorer les contrôles et leurs enfants lors de la recherche, en tenant compte du fait que les contrôles sont ou ne sont pas visibles, et aussi en fonction de n'importe quel autre critère de votre choix.
    Maintenant, TControl.EnumControls n'attend qu'un seul paramètre : une fonction anonyme. Cette fonction reçoit un contrôle et sa valeur de retour détermine ce qui doit être ensuite effectué : continuer la recherche normalement, continuer tout en ignorant le contrôle reçu, ou quitter la recherche.

Nouveaux membres dans la classe FMX.TabControl.TTabControl

Pour le composant TTabControl, FireMonkey fournit désormais de nouvelles méthodes et propriétés :

  • Add ajoute un nouvel onglet à la fin du contrôle onglet.
  • Insert ajoute un nouvel onglet à un emplacement spécifique.
  • Delete supprime un onglet du contrôle onglet.
  • Next déplace l'onglet actif vers le prochain onglet visible.
  • Previous déplace l'onglet actif vers le précédent onglet visible.


Changements relatifs à la RTL

Utilisation du tethering d'app pour l'interaction interpériphérique entre applications

La RTL fournit de nouveaux composants qui permettent à vos applications d'interagir avec d'autres applications s'exécutant sur la même machine ou sur une machine distante. En utilisant le tethering d'app (aussi appelé Partage de connexion), vos applications peuvent :

La RTL fournit une sécurité basée sur l'utilisation d'un mot de passe pour les connexions par tethering d'app entre les applications. Vous pouvez utiliser ce système basé sur un mot de passe pour implémenter votre propre procédure de sécurité. Par exemple, vous pouvez :

  • Amener les applications à se connecter automatiquement lorsqu'elles se découvrent les unes les autres, de manière transparente pour les utilisateurs.
  • Permettre aux utilisateurs d'entrer un mot de passe dans les deux applications pour les appairer.

La fonctionnalité de tethering d'app ne dépend pas d'un transport ou d'un protocole spécifique. Dans 1.14, la RTL supporte les connexions Ethernet entre les applications sur le même réseau local (LAN), notamment les applications s'exécutant sur le même périphérique. Vous pouvez implémenter vos propres adaptateurs pour supporter de nouveaux transports et protocoles en utilisant l'API du tethering d'app.

Mises à jour du navigateur Web TWebBrowser

Le navigateur Web disponible sur Windows (SHDocVw.TWebBrowser) a été modifié par rapport à la dernière version d'Internet Explorer.

Modifications de bases de données

Changements relatifs à FireDAC

  • TFDMemTable :  Des améliorations du mode conception vous permettent de charger et sauvegarder les données des fichiers binaires, XML et JSON. Vous pouvez aussi affecter des données provenant d'autres ensembles de données à un TFDMemTable en mode conception.
  • Explorateur de données :  L'explorateur de données contient désormais un noeud FireDAC qui vous permet de glisser/déposer des composants FireDAC sur des fiches, de créer des connexions FireDAC dans l'explorateur de données, etc.
  • Améliorations SQL local pour mieux gérer les ensembles de données ad-hoc :
    • TFDCustomLocalSQL et TFDLocalSQL comportent des modifications d'API.
    • Un seul TFDLocalSQL peut gérer plusieurs schémas :
      • L'objet de connexion DS peut être non seulement un TObject, mais aussi un IInterface.
      • Les points de sauvegarde DS peuvent être int64.
      • Suppression automatique des ensembles de données temporaires/garbage.
      • Registre pour les adaptateurs d'ensembles de données personnalisés.
  • Refactoring du flux et format de sérialisation JSON :
    • Nouvelles unités FireDAC.Stan.StorageBin / XML / JSON.
    • Chaque format de sérialisation a été déplacé dans l'unité FireDAC.Stan.StorageXxx.
    • Le composant TFDStanStorageXxxLink a été ajouté pour chaque format.
    • TFDResourceOptions.StorePrettyPrint a été ajouté pour contrôler le formatage XML / JSON.
    • Le format de sérialisation JSON a été implémenté, en ajoutant sfJSON à TFDResourceOptions.DefaultStoreFormat.
  • Nouveau pilote Informix natif FireDAC :
    • Basé sur le pilote ODBC Informix.
    • Supporte à la fois Win32 et Win64.
  • L'utilisation du composant TFDPhysXxxxDriverLink est maintenant facultative :
    • Le code FireDAC du mode conception est automatiquement ajouté à l'unité de l'implémentation de pilote FireDAC requise dans la clause "uses".
    • Utilisez le composant TFDPhysXxxxDriverLink pour configurer une bibliothèque client SGBD.
    • FireDAC supporte les paramètres table SQL Server 2008.
      • Seul le type de paramètre ptInput est supporté (limitation MSSQL).
      • Les paramètres table sont du type de données ftDataSet.
      • Pour une procédure stockée, TFDParam.DataTypeName est facultatif. Pour une commande DML, TFDParam.DataTypeName est obligatoire.
  • Contrôle des champs automatiques et persistants d'un ensemble de données :

Exemple de définition de connexion Informix pour FireDAC

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

Type de table SQL Server et procédure stockée pour 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

Utilisation TVP SQL Server dans Object Pascal pour FireDAC

     // Automatic procedure metadata retrieval and setup
     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;

     // Manual procedure setup
     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;

     // SQL query execution:
     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;

Notifications push pour iOS et Android

Le framework REST BaaS (Backend As A Service) vous permet d'utiliser les fournisseurs BaaS Kinvey ou Parse dans vos apps mobiles pour :

  • Créer, récupérer, mettre à jour et supprimer des objets
  • S'inscrire, se connecter, récupérer, mettre à jour et supprimer des utilisateurs
  • Charger, télécharger et supprimer des fichiers ou des flux
  • Exécuter des requêtes sur des objets et des utilisateurs
  • Envoyer des notifications push
  • S'abonner à et recevoir des notifications push sur un périphérique

Les unités API de REST.Backend vous permettent d'exécuter les méthodes API REST Kinvey ou Parse. Ces unités déclarent des méthodes qui sont mappées directement sur l'API REST documentée sur les sites Web Kinvey et Parse. Vous pouvez utiliser ces unités pour écrire du code qui appelle les points de terminaison de l'API REST dans Parse ou Kinvey.

Remarques :
  • Le code écrit en utilisant les unités API REST.Backend est spécifique à Kinvey ou Parse. Par exemple, vous utiliserez REST.Backend.KinveyProvider ou REST.Backend.ParseProvider.
  • Notre framework BAAS est basé sur le framework de l'API REST. Pour activer les notifications push sur Android, le support de Google Cloud Messaging (GCM) est requis ; il permet de recevoir ces notifications. Kinvey supporte Google Cloud Messaging avec son API REST, mais ce n'est pas le cas de Parse :
    • Pour Android, vous devez utiliser Kinvey.
    • Pour iOS, vous avez le choix entre Parse ou Kinvey.

Les composants REST.Backend supportent les services BaaS de manière générale ou abstraite. Le code écrit en utilisant ces composants n'est pas spécifique à Kinvey ou Parse. Par exemple, lorsque le composant TBackendStorage est utilisé pour créer un objet, le code est le même qu'il s'agisse de créer un objet Kinvey ou un objet Parse.

L'application doit avoir un composant Provider, comme TKinveyProvider ou TParseProvider, qui contient les informations de connexion pour le service Cloud. Pour connecter un composant Provider à un composant Service, définissez la propriété "Provider", par exemple TBackendStorage.Provider.

Pour recevoir des notifications push, vous devez configurer le service de messagerie (APS ou GCM), le périphérique, le service Cloud (Kinvey ou Parse) et l'application Appmethod.

Pour des instructions sur la configuration et l'utilisation des notifications distantes avec vos apps mobiles, voir Tutoriel mobile : Utilisation des notifications distantes (iOS et Android).

Ajout du support du serveur Apache

DataSnap et WebBroker supportent désormais la création de modules Apache dans les experts suivants :

Changements de l'EDI pour 1.14

Périphérique d'aide à la conception Google Glass ajouté au Concepteur de fiches

Le Concepteur de fiches mobiles fournit maintenant un périphérique d'aide à la conception Google Glass :

GoogleGlassDesignTimeDevice.png

Pour plus d'informations, voir Création d'applications pour Google Glass.

Nouvelles icônes définies dans l'EDI

Les icônes ont été mises à jour dans le produit.

Par exemple, l'icône représentant le groupe de projets dans le Gestionnaire de projets et d'autres pages de l'EDI ProjGroup.bmp a été remplacée par ProjGroupNew.png.

Notez que les icônes n'ont pas encore été mises à jour dans l'ensemble de la documentation.

Nouvelles options du Gestionnaire de déploiement

  • La nouvelle option Remplacer vous permet de choisir les fichiers que vous ne souhaitez pas déployer de manière à éviter d'en remplacer certains sur le périphérique cible. L'option Remplacer est définie sur Toujours par défaut. Pour changer l'option et la définir sur Jamais, cliquez sur la nouvelle icône Remplacer ChangeOverwriteValueforSelectedItems.png dans le menu de la barre d'outils du Gestionnaire de déploiement.
  • La nouvelle option Conserver les fichiers ajoutés vous permet de conserver les fichiers que vous avez ajoutés manuellement au projet après avoir rétabli les options de configuration par défaut pour la plate-forme sélectionnée. L'option Conserver les fichiers ajoutés est activée par défaut, et vous pouvez modifier cette valeur en cliquant sur l'icône Rétablir DMgrRevert.png. La boîte de dialogue Veuillez spécifier l'action s'ouvre, vous permettant de sélectionner ou de désélectionner l'option Conserver les fichiers ajoutés.
Keepaddedfiles.png

Modifications relatives au Gestionnaire de SDK pour les plates-formes Android

  • Les propriétés relatives à une version de SDK Android sont maintenant organisées dans trois onglets différents : SDK, NDK et Java. Les champs SDK, NDK et Java sont chacun organisés sur l'onglet correspondant, de sorte, par exemple, qu'il est plus facile pour vous d'ajouter ou de modifier une version de SDK.
  • L'onglet NDK comporte deux nouveaux champs qui vous permettent d'introduire des chemins de bibliothèque NDK pour deux personnalités :
    • Chemin de bibliothèque NDK Appmethod C++
    • Chemin de bibliothèque NDK Object Pascal
    Cliquez sur les points de suspension [...] de l'un de ces chemins pour afficher une boîte de dialogue Répertoires vous permettant d'explorer, d'ajouter et de gérer les chemins.

NDKLibraryPaths.png

Les noms de chemins ont changé

Les noms ont légèrement changé pour le chemin d'installation de Appmethod (dans Program Files (x86)) et pour le chemin des documents (dans /Users/Documents), comme suit :

    • 1.14 : C:\Program Files (x86)\Embarcadero\Studio\14.0
  • Chemin Redist d'InterBase (variable d'environnement ($IBREDISTDIR)) :
    • 1.13 : C:\Users\Public\Documents\InterBase\redist\InterBaseXE3
    • 1.14 : C:\Users\Public\Documents\Embarcadero\InterBase\redist\InterBaseXE3
  • Chemin Documents (où sont situés les dossiers Samples, Styles et SDK de la plate-forme) :
    • 1.13 : C:\Users\Public\Documents\Embarcadero\Appmethod\13.0\
    • 1.14 : C:\Users\Public\Documents\Embarcadero\Studio\14.0\

Les nouveaux chemins corrects sont utilisés partout dans l'aide 1.14.

Nouvelles entrées de menu et nouveaux volets des résultats pour la fonctionnalité Rechercher les références / Rechercher les définitions (C++)

La fonctionnalité Indexeur C++ autorise la recherche des références/recherche des définitions pour C++. L'indexation C++ est supportée par nos compilateurs C++ basés sur Clang (c'est-à-dire pour les plates-formes cible Windows 64 bits, iOS et Android).

Pour activer l'indexation C++, activez l'option Fichiers d'index pour 'Définitions et références', située dans l'emplacement suivant :

Après l'indexation, les commandes de menu Chercher C++ sont disponibles dans le menu contextuel de l'éditeur de code.

Les nouvelles commandes du menu contextuel de l'éditeur de code sont :

Vous pouvez accéder aux quatre nouveaux volets des résultats pour la fonctionnalité Indexeur C++ via :

Changements relatifs aux options de projet pour 1.14

UseMSBuildExternally.png

Nouvelle page Orientation pour les apps mobilesNumber1.png

Les options Orientation présentes auparavant sur la page Application ont été déplacées vers une autre page. Pour accéder à la nouvelle page Orientation, choisissez Projet > Options > Application > Orientation.

Nouvelle option pour le compilateur Object Pascal Number2.png

La nouvelle option Utiliser MSBuild de façon externe pour compiler de la page Compilateur Object Pascal permet de construire votre projet à l'extérieur de l'EDI en utilisant MSBuild. Cette option est définie sur False par défaut. Pour l'activer, choisissez Projet > Options | Compilateur Object Pascal.

Cette nouvelle option résout un problème de type Mémoire insuffisante pouvant se produire lorsque vous construisez de très grands projets contenant des applications et des bibliothèques.

Nouvelle clé sur la page Informations de version pour Android

La nouvelle paire clé-valeur hardwareAccelerated de la page Informations de version active l'accélération matérielle de votre application dans son ensemble. Cette clé-valeur ajoute l'attribut hardwareAccelerated à la balise <application> dans le fichier AndroidManifest.xml ; la valeur est à True par défaut.

HardwareAccelerated.png

Pour accéder à la page Informations de version, choisissez Projet > Options > Informations de version.

Nouvelles options pour le lieur C++

  • Pour toutes les plates-formes mobiles :
    • Générer le fichier des symboles .map : Cette option génère un fichier map dans .\OutputFolder\ProjectName.map.
    • Retirer le fichier lieur .lnk temporaire après la liaison : Cette option retire le fichier temporaire du lieur dans .\OutputFolder\ProjectName.lnk.
  • Pour la plate-forme de périphérique iOS :
    • Lier avec des expressions régulières : Cette option établit une liaison avec la bibliothèque d'expressions régulières.

Pour accéder à la page Lieur C++, choisissez Projet > Options | Lieur C++.

Les commandes Exécuter fournissent un nouveau paramètre -cleaninstall pour les plates-formes mobiles

Le comportement par défaut a changé pour les commandes Exécuter sur vos projets mobiles, aussi bien pour Exécuter que pour Exécuter sans débogage. Lorsque vous exécutez une application sur un périphérique mobile qui contient une application installée précédemment avec le même nom de package :

  • Auparavant, les commandes Exécuter désinstallaient les répertoires de données et de cache en plus de l'exécutable lui-même.
  • Désormais, les commandes Exécuter désinstallent seulement l'exécutable et laissent les répertoires de données et de cache en l'état sur la plate-forme mobile.

Cependant, vous pouvez spécifier d'utiliser le comportement précédent (suppression de tous les répertoires de données et de cache lorsque vous exécutez une application sur un périphérique mobile). Pour ce faire, sélectionnez Exécuter > Paramètres, et ajoutez le paramètre suivant :

-cleaninstall

Pour plus d'informations, voir "Exécution de votre application avec des dossiers de données et de cache nettoyés" dans :

Notez également que si vous changez la configuration de la plate-forme pour un projet spécifique, nous vous conseillons de définir le paramètre -cleaninstall en allant dans Exécuter > Paramètres. Sinon, vous risquez d'obtenir une erreur.

Modifications apportées dans la Liste des droits pour iOS et OS X

La page Liste des droits pour iOS a été révisée. Vous pouvez accéder à la liste des droits via Projet > Options > Liste des droits.

En dehors de la page Liste des droits pour iOS, vous pouvez désormais modifier manuellement les fichiers contenant les droits pour iOS et OSX. Lorsque vous construisez une application pour une plate-forme cible iOS ou Mac OS X pour la première fois, un modèle <Entitlement.TemplateiOS.xml> ou <Entitlement.TemplateOSX32.xml> est ajouté à votre dossier de projet. Vous pouvez aussi prédéfinir des clés applicables aux droits pour tous vos projets comme point de départ.

Pour plus d'informations, voir Personnalisation de votre liste des droits.

Changements relatifs à l'API Windows pour 1.14

DirectX 11 supporté dans 1.14

Winapi a été étendu avec de nouvelles unités qui fournissent aux applications Delphi l'accès à l'API DirectX 11 :

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

Pour de l'aide sur l'utilisation de DirectX, voir le guide DirectX Graphics and Gaming.

OpenGL 4.3 et versions antérieures supportées dans 1.14

Une nouvelle unité, "Winapi.OpenGLext", fournit le support des versions OpenGL 1.2 à 4.3. Pour utiliser les dernières fonctionnalités OpenGL, incluez cette unité dans votre section uses et appelez InitOpenGLext :

InitOpenGLext;

"Winapi.OpenGL", l'unité qui fournit la prise en charge de OpenGL 1.1, a été modifiée et supporte désormais l'intégralité de l'API OpenGL 1.1.

Pour de l'aide sur l'utilisation de OpenGL, voir :

Refactoring des bibliothèques

Nouveautés de l'aide

Voir aussi