IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Article de test : Présentation des nouveautés de Delphi 2010


Sujet :

Delphi

  1. #1
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut Article de test : Présentation des nouveautés de Delphi 2010
    Le 25 Août dernier, Embarcadero a rendu disponible sa nouvelle version de Delphi et RAD Studio.

    Article : Découvrez les nouveautés et les améliorations proposés par Delphi 2010.

    Lire aussi :
    Delphi RAD Studio 2010 sur le site d'embarcadero (en anglais)
    Séminaire technique RAD Studio 2010 le 29 Septembre 2009 à Paris La défense

    N'hésitez pas à laisser vos remarques et questions sur ce topic, ayant bêta-testé le produit j'essayerais de répondre du mieux que je peux.
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 429
    Points : 24 794
    Points
    24 794
    Par défaut
    Je n'ai pu tester que Delphi 2009, 4 jours, j'espère avoir plus de temps pour tester 2010, cette fois ci, un chef vient au Code Way, et s'y interesse vraiement, c'est cool, je pourrais jouer mon vieux réac qui ne veut pas changer ses habitudes (je pense à la palette)

    J'ai lu ton article, plein de petites choses interressantes qui pour moi le sont bien plus que le 64Bits, parce que chacune répondent à un problème précis qui ont émergé récemment (TIFF, JSON, ...)

    le "delayed", si j'ai bien compris, finalement cela remplace LoadLibray\GetProcAddress ? Si oui, tous ces codes où j'ai du me le taper pour interfacer des DLL, sans rendre l'installation nécessaire de tous les modules et autres matériels ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    La philosophie du mot-clé delayed c'est de bénéficier d'une déclaration d'une méthode exportée tout en supportant le fait qu'elle n'est peut-être pas présente sur le système.

    Le liage est toujours fait automatiquement mais plus au démarrage de l'application, il est fait "juste à temps". Par contre la vérification pour savoir si la méthode exportée existe ou pas est toujours à la charge du développeur et le moyen de le détecter aussi.

    Au passage je tient à préciser que CodeGear à revu le temps de la période d'essai qui est repassé à 30 jours au lieu de 14 comme cela avait été fait pour D2009.
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  4. #4
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par Aka Guymelef Voir le message
    La philosophie du mot-clé delayed c'est de bénéficier d'une déclaration d'une méthode exportée tout en supportant le fait qu'elle n'est peut-être pas présente sur le système.

    Le liage est toujours fait automatiquement mais plus au démarrage de l'application, il est fait "juste à temps". Par contre la vérification pour savoir si la méthode exportée existe ou pas est toujours à la charge du développeur et le moyen de le détecter aussi.

    Au passage je tient à préciser que CodeGear à revu le temps de la période d'essai qui est repassé à 30 jours au lieu de 14 comme cela avait été fait pour D2009.
    est-ce que l'appel à une méthode delayed dont la DLL n'est pas présente lève une exception ?

    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    begin
      try
        DD := DirectDrawCreate();
      except
        on e: EDelayedException do
         ShowMessage('DirectX not installed (or DDRAW.DLL not found)');
      end;
    end;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Je n'ai pu tester que Delphi 2009, 4 jours, j'espère avoir plus de temps pour tester 2010, cette fois ci, un chef vient au Code Way, et s'y interesse vraiement, c'est cool, je pourrais jouer mon vieux réac qui ne veut pas changer ses habitudes (je pense à la palette)
    si ce n'est que ça, la palette est revenue, et tu as en plus dessus une zone de texte pour rechercher des composants plus facilement

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    est-ce que l'appel à une méthode delayed dont la DLL n'est pas présente lève une exception ?
    Bonne question à laquelle je ne connais pas la réponse et que je ne peux pas tester car ma version bêta à expirée pour le moment
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  7. #7
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par Aka Guymelef Voir le message
    Bonne question à laquelle je ne connais pas la réponse et que je ne peux pas tester car ma version bêta à expirée pour le moment
    je confirme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    procedure test; external 'test.dll' delayed;
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      try
        test;
      except
        on e: EExternalException do
          ShowMessage('test.dll non trouvé');
      end;
    end;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  8. #8
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Merci pour la précision.
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  9. #9
    Membre éclairé Avatar de Kaféine
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 569
    Points : 736
    Points
    736
    Par défaut
    Citation Envoyé par Article
    Transtyper une interface vers sa classe d'implémentation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    type
      IMonInteface = interface
        procedure Toto;
      end;
     
      TMaClasse = class(TInterfacedObject, IMonInteface)
        procedure Toto;
        procedure Titi;
      end;
     
    procedure FaisQuelqueChose(AMonInterface: IMonInteface);
    begin
      if AMonInterface is TMaClasse then
        TMaClasse(AMonInterface).Titi;
    end;
    Trop cool, et ENFIN !! pas trop tôt..... :\
    Akim Merabet

  10. #10
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par Kaféine Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    type
      IMonInteface = interface
        procedure Toto;
      end;
     
      TMaClasse = class(TInterfacedObject, IMonInteface)
        procedure Toto;
        procedure Titi;
      end;
     
    procedure FaisQuelqueChose(AMonInterface: IMonInteface);
    begin
      if AMonInterface is TMaClasse then
        TMaClasse(AMonInterface).Titi;
    end;
    Trop cool, et ENFIN !! pas trop tôt..... :\
    hum...je demande à voir le code qui est derrière, car une interface n'est pas supposée retourner un objet Delphi ... sans doute un QueryInterface

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    type
      IMonInteface = interface
        procedure Toto;
      end;
     
      IDelphiObject = interface
      ['{F9FB3BA7-E1F0-49FD-9E81-689F7B36F636}']
        function GetInstance: TObject;
      end;
     
      TMaClasse = class(TInterfacedObject, IMonInteface, IDelphiObject)
        procedure Toto;
        procedure Titi;
        function GetInstance: TObject;
      end;
     
    procedure TMaClasse.Toto;
    begin
    end;
     
    procedure TMaClasse.Titi;
    begin
      ShowMessage('Titi');
    end;
     
    function TMaClasse.GetInstance: TObject;
    begin
      Result := Self;
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    var
      AMonInterface : IMonInteface;
      IObject: IDelphiObject;
    begin
      AMonInterface := TMaClasse.Create;
      if AMonInterface.QueryInterface(IDelphiObject, IObject) = 0 then
        TMaClasse(IObject.GetInstance).Titi;
    end;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  11. #11
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 429
    Points : 24 794
    Points
    24 794
    Par défaut
    Oui, j'ai vu cela aussi, bcp de sujet sur les interfaces auraient été résolu par cela, par contre, on récupère vraiement l'instance de l'objet d'origine ?

    Cela permettrait d'éviter d'ouvrir certaines fonction que l'on a besoin lorsque l'on manipule une interface à un autre programme et que ce dernier nous l'a renvoie comme paramètre d'une méthode d'une autre interface ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ObjetA := TClassA.Create();
    InterfaceA := ObjetA;
    if InterfaceA is TClassA
      if ObjetA = TClassA(InterfaceA) then
        Yahoo !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  12. #12
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Il y a effectivement une astuce avec le QueryInterface, tout les secrets sont expliqués ici.

    Mais comme Delphi n'est toujours pas fonctionnel je ne peux pas tester si cela retourne bien l'instance d'origine ou bien une autre créée à partir de la classe.

    PS : le GUID en question est le suivant ObjCastGUID: TGUID = '{CEDF24DE-80A4-447D-8C75-EB871DC121FD}';
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  13. #13
    Fxg
    Fxg est déconnecté
    Membre éclairé
    Homme Profil pro
    ingénieur financier
    Inscrit en
    Septembre 2003
    Messages
    510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur financier

    Informations forums :
    Inscription : Septembre 2003
    Messages : 510
    Points : 837
    Points
    837
    Par défaut
    Bonjour

    je suis en train de voir Delphi 2010 et j'ai juste une petite question par rapport à mon bon vieux d7 :

    - mon application a besoin du composant twainy pour fonctionner que sous D7 j'installais simplement en faisant Composant/Installer un composant

    Par contre sous D2010 je n'ai plus installer un composant...

    C'est la même chose qu'indiqué dans la FAQ sur le bug dans le menu composant (pas de résultat) ?

  14. #14
    Fxg
    Fxg est déconnecté
    Membre éclairé
    Homme Profil pro
    ingénieur financier
    Inscrit en
    Septembre 2003
    Messages
    510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur financier

    Informations forums :
    Inscription : Septembre 2003
    Messages : 510
    Points : 837
    Points
    837
    Par défaut
    Quand il fait trop chaud les neurones ne fonctionnent plus...

    Les composants s'importent bien quand on suit la bonne méthode.

  15. #15
    Membre confirmé

    Homme Profil pro
    Chef de Projet ATIC
    Inscrit en
    Novembre 2005
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de Projet ATIC
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 274
    Points : 508
    Points
    508
    Par défaut
    Citation Envoyé par Eric GASPARD
    Jusqu'à présent, le formatage de code a toujours été assuré par un plugin externe. Aujourd'hui c'est terminé, l'EDI se dote enfin d'un formateur de code en standard, complètement personnalisable. Un petit coup de CTRL+ALT+F et votre code est formaté.
    Faut penser à retirer Jedi Code Format Par défaut, la combinaison de touche dans D2010 (Pro FR) est Ctrl+D, accessible aussi via un clic droit sur le code source.

    Citation Envoyé par Eric GASPARD
    Bien sûr on pourrait s'interroger sur l'intérêt d'un clavier virtuel dans une application. Déployé sur un PC normal aucun
    Peut être pas si inutile que ça. Je pense par exemple aux applications sensibles, au moment de la saisie du mot de passe et permettant ainsi d'éviter les Keylogger. On retrouve cette méthode de plus en plus fréquemment, surtout sur le web.

  16. #16
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 170
    Points
    4 170
    Par défaut
    Citation Envoyé par Okaryn Voir le message
    Peut être pas si inutile que ça. Je pense par exemple aux applications sensibles, au moment de la saisie du mot de passe et permettant ainsi d'éviter les Keylogger.
    Je ne suis pas sûr que ce soit une bonne idée pour cet usage.
    Les claviers virtuels pour éviter les keylogger changent la disposition des touches à chaque affichage pour éviter qu'un keylogger ne s'adapte.

    Alors un composant standard qui affiche toujours le même clavier virtuel, ça risque surtout de donner un virtual keylogger générique... En plus, si tu passes par ce clavier virtuel chaque fois que tu dois faire une saisie sensible, tu vas dire au keylogger : "Attention, c'est maintenant que je vais saisir des infos intéressantes à logger...".

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 25
    Points : 21
    Points
    21
    Par défaut [D2010][installation] message mémoire insuffisante
    Bonjour, j'ai installé la version d'évaluation de D2010 Architect [WINDOWS XP Professionnel SP3]. Pendant 10 jours, je n'ai rencontré aucun problème. Depuis 3 jours, en lançant le programme, j'ai le message:
    mémoire insuffisante
    puis un autre message disant qu'il n'y a pas de place pour installer la pile.
    J'ai tout vérifié, les tests de diagnostic sont corrects, aussi bien en ce qui concerne la RAM que le DD et le fichier d'échange utilisé à 20%.
    Ce matin, après avoir nettoyé et compacté la base de registre, D2010 a réussi à se charger. Je l'ai aussitôt fermé et relancé : même problème. Quelqu'un aurait il une idée ?

  18. #18
    Membre émérite
    Avatar de Thierry Laborde
    Homme Profil pro
    N/A
    Inscrit en
    Avril 2002
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : N/A

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 391
    Points : 2 529
    Points
    2 529
    Par défaut
    Bonjour,

    Quelle est la config exacte du poste ou est installé delphi ?

    Taille disque dur, espace dispo, RAM....etc.

Discussions similaires

  1. Présentation des nouveautés de WCF Data Services 1.5
    Par Jean-Michel Ormes dans le forum Contribuez
    Réponses: 3
    Dernier message: 21/01/2010, 21h39
  2. Réponses: 5
    Dernier message: 20/08/2009, 10h03
  3. Présentation des nouveautés Zend Studio 7.0
    Par aityahia dans le forum Zend Studio
    Réponses: 7
    Dernier message: 11/08/2009, 23h47
  4. Présentation des nouveautés de Java 5.0 Tiger (J2SE 1.5)
    Par christopheJ dans le forum Langage
    Réponses: 43
    Dernier message: 30/09/2007, 18h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo