{"id":7107,"date":"2020-05-07T06:40:22","date_gmt":"2020-05-07T06:40:22","guid":{"rendered":"https:\/\/www.barnsten.com\/?p=7107"},"modified":"2020-05-07T06:42:18","modified_gmt":"2020-05-07T06:42:18","slug":"nouveaute-dans-delphi-10-4-apercu-du-code-remanie","status":"publish","type":"post","link":"https:\/\/www.barnsten.com\/fr\/new-in-delphi-10-4-redesigned-code-insight\/","title":{"rendered":"Nouveau dans Delphi 10.4 : Code Insight remani\u00e9"},"content":{"rendered":"<p><em>Dans la version 10.4, nous avons retravaill\u00e9 la compl\u00e9tion de code et d'autres fonctionnalit\u00e9s. Il s'agit de l'un des changements les plus importants apport\u00e9s \u00e0 l'IDE depuis une dizaine d'ann\u00e9es.<\/em><\/p>\n<h2>Qu'entendons-nous par Code Insight ?<\/h2>\n<p>Tout d'abord, un peu d'histoire. Si vous \u00eates familier avec Code Insight, passez directement \u00e0 l'\u00e9tape suivante...<\/p>\n<p>Code Insight est notre nom pour un ensemble de fonctionnalit\u00e9s de productivit\u00e9 de l'IDE dans l'\u00e9diteur. Pour les besoins de ce billet de blog, ces fonctionnalit\u00e9s sont les suivantes :<\/p>\n<ul>\n<li><strong><a href=\"http:\/\/docwiki.embarcadero.com\/RADStudio\/Rio\/en\/Code_Insight_(IDE_Tutorial)#Code_Completion_.E2.80.94_Ctrl.2BSpace\">Ach\u00e8vement du code<\/a><\/strong><strong>:<\/strong>\u00a0la liste d\u00e9roulante qui pr\u00e9dit ce que vous voulez taper. Appara\u00eet lorsque vous tapez un point (.) apr\u00e8s un identificateur, ou lorsque vous tapez\u00a0<a href=\"http:\/\/docwiki.embarcadero.com\/RADStudio\/Rio\/en\/Code_Completion\">appuyer sur Ctrl+Espace<\/a>.<br \/>\n<img decoding=\"async\" src=\"https:\/\/community.idera.com\/resized-image\/__size\/640x480\/__key\/communityserver-blogs-components-weblogfiles\/00-00-00-03-37\/pastedimage1588790327926v5.png\" alt=\" \" \/><\/li>\n<li><strong><a href=\"http:\/\/docwiki.embarcadero.com\/RADStudio\/Rio\/en\/Code_Insight_(IDE_Tutorial)#Code_Parameter_Hints_.E2.80.94_Ctrl.2BShift.2BSpace\">Ach\u00e8vement des param\u00e8tres<\/a><\/strong><strong>:<\/strong>\u00a0l'astuce qui appara\u00eet pour montrer les param\u00e8tres d'une m\u00e9thode, y compris les variations multiples pour une m\u00e9thode surcharg\u00e9e. Ctrl+Maj+Espace \u00e0 l'int\u00e9rieur des accolades de la m\u00e9thode ().<br \/>\n<img decoding=\"async\" src=\"https:\/\/community.idera.com\/resized-image\/__size\/640x480\/__key\/communityserver-blogs-components-weblogfiles\/00-00-00-03-37\/pastedimage1588790335783v6.png\" alt=\" \" \/><\/li>\n<li><strong>Trouver la d\u00e9claration :<\/strong>\u00a0Faites un clic droit sur un identificateur et cliquez sur Trouver la d\u00e9claration, ce qui vous conduira \u00e0 l'endroit o\u00f9 la m\u00e9thode, la variable, le type, etc. est d\u00e9fini. Vous pouvez \u00e9galement maintenir la touche Control enfonc\u00e9e et d\u00e9placer votre souris sur l'\u00e9diteur, et les identifiants applicables se transformeront en hyperliens sur lesquels vous pourrez cliquer pour trouver leur d\u00e9claration, ce qui est connu sous le nom de\u00a0<a href=\"http:\/\/docwiki.embarcadero.com\/RADStudio\/Rio\/en\/Code_Insight_(IDE_Tutorial)#Code_Browsing_.E2.80.94_Ctrl.2BClick\">Navigation dans les codes<\/a>.<\/li>\n<li><strong><a href=\"http:\/\/docwiki.embarcadero.com\/RADStudio\/Rio\/en\/Using_Code_Insight#To_enable_and_use_ToolTip_Symbol_Insight\">Aper\u00e7u de l'infobulle<\/a><\/strong><strong>:<\/strong>\u00a0Passez votre souris sur une variable ou un type, et vous obtiendrez des informations \u00e0 son sujet. Cela inclut parfois XMLDoc et est connu sous le nom de\u00a0<a href=\"http:\/\/docwiki.embarcadero.com\/RADStudio\/Rio\/en\/Code_Insight_(IDE_Tutorial)#Help_Insight_.E2.80.94_Ctrl.2BShift.2BH\">Aide Insight<\/a>. (Nous devons clarifier les noms dans notre document).<\/li>\n<li><strong><a href=\"http:\/\/docwiki.embarcadero.com\/RADStudio\/Rio\/en\/Code_Insight_(IDE_Tutorial)#Error_Insight\">Aper\u00e7u des erreurs<\/a><\/strong><strong>:<\/strong>\u00a0affiche les erreurs dans votre code avant la compilation. Ces erreurs sont connues sous le nom de \"red squigglies\", la terminologie pr\u00e9f\u00e9r\u00e9e de beaucoup de gens - les lignes rouges en zigzag sous votre code. Les erreurs sont \u00e9galement affich\u00e9es dans le n\u0153ud Erreurs de la section\u00a0<a href=\"http:\/\/docwiki.embarcadero.com\/RADStudio\/Rio\/en\/Structure_View\">Vue de la structure<\/a>.<\/li>\n<\/ul>\n<p>Ces fonctionnalit\u00e9s sont disponibles dans Delphi depuis de nombreuses ann\u00e9es. Les fonctionnalit\u00e9s de ce type sont un avantage cl\u00e9 pour vous lorsque vous codez un IDE. La compl\u00e9tion de code, en particulier, permet d'\u00e9conomiser beaucoup de temps de frappe, et la d\u00e9tection des erreurs vous permet de vous assurer que votre code fonctionne avant de passer du temps \u00e0 le compiler.<\/p>\n<h2>Aper\u00e7u du code classique<\/h2>\n<p>Au fil de l'\u00e9volution de la langue et du temps, ces fonctionnalit\u00e9s n'ont plus toujours fonctionn\u00e9 aussi bien que nous le souhaitions. La technologie \u00e9tait \u00e0 la pointe du progr\u00e8s lorsqu'elle a \u00e9t\u00e9 introduite, mais nous pourrions y apporter des am\u00e9liorations aujourd'hui.<\/p>\n<p>Il est fr\u00e9quent de voir des rapports de bogues concernant des erreurs parasites (c'est-\u00e0-dire des erreurs signal\u00e9es dans l'\u00e9diteur ou dans la vue Structure alors que le code source est en fait parfaitement correct). Ou que l'IDE travaillait dans le thread principal, et ne r\u00e9pondait donc pas aux frappes de clavier pendant qu'il travaillait \u00e0 afficher la liste de compl\u00e9tion du code (vous ne pouviez appuyer que sur Echap pour annuler). (Parfois, pour des projets gigantesques, le calcul des donn\u00e9es pour la compl\u00e9tion de code pouvait utiliser beaucoup de m\u00e9moire dans l'IDE. En outre, les fonctionnalit\u00e9s ont \u00e9t\u00e9 mises en \u0153uvre avec plusieurs analyseurs de code : la compl\u00e9tion de code et la d\u00e9tection d'erreurs avaient chacune une compr\u00e9hension diff\u00e9rente du code. Enfin, l'analyse du code \u00e9tait d\u00e9sactiv\u00e9e pendant le d\u00e9bogage, de sorte que si vous \u00e9criviez du code pendant le d\u00e9bogage, vous ne b\u00e9n\u00e9ficiiez d'aucune aide \u00e0 la productivit\u00e9.<\/p>\n<p>Nous ne voulions pas que cela continue. Nos objectifs pour la version 10.4 ont \u00e9t\u00e9 les suivants :<\/p>\n<ul>\n<li>Make Code Insight\u00a0<i>asynchrone<\/i>\u00a0- c'est-\u00e0-dire s'ex\u00e9cuter dans un autre thread ou dans un autre processus (ou les deux) afin que l'IDE soit toujours r\u00e9actif lorsque vous tapez, m\u00eame s'il travaille en arri\u00e8re-plan.<\/li>\n<li>R\u00e9duire, voire supprimer compl\u00e8tement (vous voyez o\u00f9 je veux en venir) le potentiel\u00a0<i>utilisation de la m\u00e9moire<\/i>\u00a0pour compl\u00e9ter le code \u00e0 partir de l'IDE<\/li>\n<li>Veiller \u00e0 ce que Error Insight donne toujours\u00a0<i>r\u00e9sultats corrects<\/i>\u00a0- c'est-\u00e0-dire qu'il devrait donner exactement les erreurs que le compilateur ferait, et un code correct ne devrait pas montrer d'erreurs<\/li>\n<li>Aidez-nous \u00e0 nous rapprocher d'une\u00a0<i>analyseur syntaxique unique<\/i>\u00a0pour la source Delphi dans l'IDE, afin qu'il y ait une \"source unique de v\u00e9rit\u00e9\" ou une compr\u00e9hension unique de la signification du code Delphi dans l'IDE.<\/li>\n<li>Moderniser l'approche de l'outil de codage de Delphi afin d'utiliser des techniques modernes<\/li>\n<li>Et r\u00e9soudre en m\u00eame temps un certain nombre de bogues dans la compl\u00e9tion de code<\/li>\n<li>Et ajoutez au moins une fonctionnalit\u00e9 de compl\u00e9tion de code... Attendez ! Ajoutez deux nouvelles fonctionnalit\u00e9s de compl\u00e9tion de code en m\u00eame temps !<\/li>\n<\/ul>\n<p>Tout cela se trouve dans Delphi 10.4.<\/p>\n<p>Enthousiaste ? Nous le sommes. Il s'agit de l'un des plus grands et des meilleurs changements apport\u00e9s \u00e0 l'IDE Delphi depuis quinze ans.<\/p>\n<p>(Et ne vous inqui\u00e9tez pas, si vous en avez besoin, la vision classique du code est toujours l\u00e0, avec quelques nouvelles corrections de bogues, et peut \u00eatre activ\u00e9e dans la version 10.4 si vous le souhaitez).<\/p>\n<h2>Code Insight Technology dans Delphi 10.4<\/h2>\n<p>Dans la version 10.4, les fonctions d'analyse du code susmentionn\u00e9es sont mises en \u0153uvre \u00e0 l'aide d'un \"serveur LSP\". Vous avez peut-\u00eatre entendu parler de cette technologie, mais si ce n'est pas le cas, LSP fait r\u00e9f\u00e9rence au Language Server Protocol, qui est un moyen standardis\u00e9 d'impl\u00e9menter des fonctionnalit\u00e9s similaires \u00e0 l'aper\u00e7u du code pour de nombreux langages. Un IDE communique avec un \"serveur de langue\", qui est une petite application d'aide qui calcule et g\u00e9n\u00e8re les informations affich\u00e9es par l'IDE. Il utilise pour cela un protocole d\u00e9fini, qui est le protocole du serveur de langue.<\/p>\n<p>En d'autres termes, l'IDE parle maintenant \u00e0 une application d'aide lorsque vous faites quelque chose comme ouvrir un projet, ou taper une touche dans votre fichier, et l'IDE peut p\u00e9riodiquement lui poser des questions, telles que : Quels sont les r\u00e9sultats de l'ach\u00e8vement \u00e0 cet endroit ? Cette application d'assistance suit votre code et renvoie une r\u00e9ponse \u00e0 toutes les questions, ainsi que toutes les erreurs qu'elle a rencontr\u00e9es dans le code en cours de route.<\/p>\n<p>Notre application serveur est construite autour du compilateur, utilisant le compilateur comme un service pour fournir des r\u00e9sultats LSP. Cela signifie que les donn\u00e9es affich\u00e9es par l'IDE, y compris les erreurs \"rouges\", proviennent toutes du compilateur lui-m\u00eame.<\/p>\n<p>Cela signifie plusieurs choses :<\/p>\n<ul>\n<li>La communication avec un autre processus est asynchrone. Dans l'IDE, elle est mise en \u0153uvre dans un autre thread. Vous pouvez continuer \u00e0 taper, m\u00eame fermer votre fichier ou ouvrir un autre projet, pendant que l'IDE attend de recevoir les donn\u00e9es qu'il a demand\u00e9es<\/li>\n<li>Le travail est effectu\u00e9 dans un autre processus. Cela signifie que toute l'utilisation de la m\u00e9moire pour le calcul des r\u00e9sultats n'est plus dans l'IDE lui-m\u00eame. L'IDE dispose de plus de m\u00e9moire, et l'application d'assistance peut utiliser tout son espace m\u00e9moire uniquement pour fournir des r\u00e9sultats.<\/li>\n<li>Il utilise un protocole moderne et normalis\u00e9 qui s'applique \u00e0 de nombreuses langues.<\/li>\n<li>Ce que vous voyez \u00e0 l'\u00e9cran est ce que le compilateur voit. Cela signifie qu'il devrait \u00eatre exact. Si votre code se compile, vous ne verrez aucune erreur Error Insight ; \u00e0 l'inverse, si vous voyez des traits rouges dans votre code ou dans la vue Structure, votre code ne se compilera pas.<\/li>\n<li>Vous pouvez obtenir la compl\u00e9tion de code pendant le d\u00e9bogage.<\/li>\n<\/ul>\n<p>Ce sont l\u00e0 de tr\u00e8s bonnes choses.<\/p>\n<p>Mais assez de texte. Voyons ce que cela donne en action !<\/p>\n<h2>Code moderne Delphi Insight en action<\/h2>\n<p>Il est difficile de montrer la r\u00e9activit\u00e9 dans un blog. Dans ces captures d'\u00e9cran statiques, imaginez que vous \u00eates en train de taper et que vous ne voyez jamais le curseur d'attente de Windows.<\/p>\n<p>L'imagination deviendra r\u00e9alit\u00e9 avec la livraison de la version 10.4 !<\/p>\n<h3>Aper\u00e7u du code pendant le d\u00e9bogage<\/h3>\n<p>La premi\u00e8re nouveaut\u00e9 est importante et ne n\u00e9cessite pas beaucoup de mots. Vous pouvez utiliser Code Insight pendant le d\u00e9bogage.<\/p>\n<p>Vous voulez d\u00e9boguer votre application et taper du code en m\u00eame temps, et obtenir la compl\u00e9tion de code ? C'est possible.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/community.idera.com\/resized-image\/__size\/640x480\/__key\/communityserver-blogs-components-weblogfiles\/00-00-00-03-37\/pastedimage1588791129386v8.png\" alt=\" \" \/><\/p>\n<p>Oui, ce que vous voyez est correct - il s'agit de la compl\u00e9tion de code et de la d\u00e9tection d'erreurs qui fonctionnent toutes deux pendant que vous d\u00e9boguez activement l'application.<\/p>\n<h3>R\u00e9sultats de l'ach\u00e8vement<\/h3>\n<p>L'utilisation de la compl\u00e9tion de code est la m\u00eame que dans la version 10.3.3, \u00e0 l'exception du fait que l'IDE reste r\u00e9actif dans la version 10.4. Mais nous avons ajout\u00e9 une nouvelle fonctionnalit\u00e9, qui vous permet de trouver plus facilement ce que vous voulez gr\u00e2ce \u00e0 la compl\u00e9tion de code. Dans la version 10.4, la compl\u00e9tion de code affichera d\u00e9sormais des r\u00e9sultats plus utiles que par le pass\u00e9 - tout en conservant les \u00e9l\u00e9ments de la version 10.3.3 en haut de la liste des r\u00e9sultats.<\/p>\n<p>Voici la compl\u00e9tion de code de la version 10.3.3, en tapant \"act\" apr\u00e8s une instance de bouton TB de VCL :<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/community.idera.com\/resized-image\/__size\/640x480\/__key\/communityserver-blogs-components-weblogfiles\/00-00-00-03-37\/pastedimage1588790306871v2.png\" alt=\" \" \/><\/p>\n<p>Notez que la version 10.3.3 ne donne que tr\u00e8s peu de r\u00e9sultats - un seul, en fait. La compl\u00e9tion de code classique ne listait que les \u00e9l\u00e9ments qui\u00a0<i>commencer par<\/i>\u00a0ce que vous avez tap\u00e9.<\/p>\n<p>Voici 10.4 en action (jeu de mots) pour la m\u00eame r\u00e9alisation :<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/community.idera.com\/resized-image\/__size\/640x480\/__key\/communityserver-blogs-components-weblogfiles\/00-00-00-03-37\/pastedimage1588790289038v1.png\" alt=\" \" \/><\/p>\n<p>Dans le document 10.4, la compl\u00e9tion de code \u00e9num\u00e8re tous les \u00e9l\u00e9ments qui\u00a0<i>contenir<\/i>\u00a0ce que vous avez tap\u00e9. D'autres IDEs le font aussi, Visual Studio par exemple, mais jusqu'\u00e0 pr\u00e9sent Delphi a montr\u00e9 une liste plus limit\u00e9e. Ceci est utile car cela vous permet de\u00a0<i>de la recherche \u00e0 l'ach\u00e8vement.<\/i><\/p>\n<p>Par exemple, supposons que vous vous souveniez qu'un contr\u00f4le a une propri\u00e9t\u00e9 quelque chose-Rect mais que vous ne vous souveniez pas de son nom. Dans la version 10.3.3, vous devez chercher sur Google. En 10.4, tapez simplement \"rect\" et vous verrez :<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/community.idera.com\/resized-image\/__size\/640x480\/__key\/communityserver-blogs-components-weblogfiles\/00-00-00-03-37\/10.4-_2D00_-code-completion-2.PNG\" alt=\" \" \/><\/p>\n<p>Vous pouvez explorer votre code en tapant.<\/p>\n<p>Le fait d'avoir plus de r\u00e9sultats n'est pas toujours ce que vous recherchez, et vous pouvez vous attendre \u00e0 n'avoir que des \u00e9l\u00e9ments qui commencent par ce que vous avez tap\u00e9 par habitude. Par d\u00e9faut, et pour conserver un comportement proche de celui que vous connaissez depuis la version 10.3.3, nous trions la liste de compl\u00e9tion de mani\u00e8re \u00e0 ce que tous les identificateurs commen\u00e7ant par soient plac\u00e9s au-dessus de tous les identificateurs contenant. En d'autres termes,\u00a0<strong>la liste donnera les m\u00eames r\u00e9sultats que 10.3.3<\/strong>mais avec des r\u00e9sultats suppl\u00e9mentaires en annexe. Vous n'avez pas besoin de les utiliser si vous ne le souhaitez pas ; ils sont situ\u00e9s apr\u00e8s les \u00e9l\u00e9ments que la version 10.3.3 vous aurait montr\u00e9s.<\/p>\n<p>Si vous souhaitez un comportement similaire \u00e0 celui d'autres IDEs, listant tous les r\u00e9sultats ensemble, nous avons un param\u00e8tre : actuellement une cl\u00e9 de registre mais nous pourrons l'exposer en tant qu'interface utilisateur. Cela signifie que si vous \u00eates plus habitu\u00e9 \u00e0 ce que VSCode fournit, vous pouvez \u00e9galement l'obtenir.<\/p>\n<div class=\"content-scrollable-wrapper\">\n<table>\n<tbody>\n<tr>\n<td><img decoding=\"async\" src=\"https:\/\/community.idera.com\/resized-image\/__size\/640x480\/__key\/communityserver-blogs-components-weblogfiles\/00-00-00-03-37\/10.4-_2D00_-lsp-_2D00_-startswith-on-2.PNG\" alt=\" \" \/><\/td>\n<td><img decoding=\"async\" src=\"https:\/\/community.idera.com\/resized-image\/__size\/640x480\/__key\/communityserver-blogs-components-weblogfiles\/00-00-00-03-37\/10.4-_2D00_-lsp-_2D00_-startswith-off-2.PNG\" alt=\" \" \/><\/td>\n<\/tr>\n<tr>\n<td>En 10.4, trier tous les \u00e9l\u00e9ments qui commencent par ce que vous avez tap\u00e9 ensemble, en haut de la liste. C'est ce que l'on voit en 10.3.3, et c'est la valeur par d\u00e9faut en 10.4.<\/td>\n<td>En 10.4, tri par port\u00e9e uniquement, de sorte que tous les \u00e9l\u00e9ments qui contiennent ce que vous avez tap\u00e9 sont affich\u00e9s ensemble. Ceci est plus proche de Visual Studio ou d'autres IDEs, et est d\u00e9sactiv\u00e9 par d\u00e9faut.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h3>S\u00e9lection dans la liste d'ach\u00e8vement<\/h3>\n<p>La compl\u00e9tion de code s\u00e9lectionne automatiquement les meilleurs \u00e9l\u00e9ments de la liste pour vous (vous pouvez donc simplement appuyer sur Entr\u00e9e ou Espace ou '.' ou similaire pour choisir cet \u00e9l\u00e9ment et continuer \u00e0 coder) dans l'ordre suivant :<\/p>\n<ul>\n<li>Une correspondance exacte avec ce que vous avez tap\u00e9. S'il n'y a pas de correspondance :<\/li>\n<li>Parmi les \u00e9l\u00e9ments qui commencent par ce que vous avez tap\u00e9, l'identifiant le plus court. S'il n'y a pas d'\u00e9l\u00e9ments commen\u00e7ant par :<\/li>\n<li>Parmi les \u00e9l\u00e9ments qui contiennent ce que vous avez tap\u00e9, l'identifiant le plus court<\/li>\n<\/ul>\n<p>Le fait de donner la priorit\u00e9 aux d\u00e9buts par rapport aux contenus signifie que la liste de compl\u00e9tion s\u00e9lectionnera automatiquement \"Parent\" plut\u00f4t que \"SetParent\". Choisir la correspondance la plus courte signifie qu'elle s\u00e9lectionnera \"Parent\" plut\u00f4t que \"ParentFont\". (Vous pouvez le voir dans les captures d'\u00e9cran ci-dessus.) En g\u00e9n\u00e9ral, nous trouvons que cela correspond \u00e0 ce que vous \u00eates le plus susceptible de taper. Bien entendu, vous pouvez faire d\u00e9filer l'\u00e9cran et appuyer sur les fl\u00e8ches vers le haut et vers le bas pour s\u00e9lectionner ce que vous voulez.<\/p>\n<h3>Aper\u00e7u des erreurs<\/h3>\n<p>Notez que dans ces captures d'\u00e9cran, vous pouvez voir en direct Error Insight, qui se met \u00e0 jour au fur et \u00e0 mesure que vous tapez. L'identifiant partiellement tap\u00e9 \"pare\", qui n'est pas un code valide, est correctement soulign\u00e9 en rouge (le soulignement dispara\u00eetra lorsque vous s\u00e9lectionnerez un \u00e9l\u00e9ment dans la liste de compl\u00e9tion). Les r\u00e9sultats d'Error Insight proviennent du compilateur lui-m\u00eame, et refl\u00e8tent et rapportent exactement ce que le compilateur voit.<\/p>\n<p>Vous ne devriez jamais voir d'erreurs incorrectes dans l'\u00e9diteur ou le volet Structure. Ce que vous voyez \u00e0 l'\u00e9cran est exact.<\/p>\n<h3>Multiprocessus Architecture<\/h3>\n<p>Ce qui suit n'est pas important pour les caract\u00e9ristiques, mais peut vous int\u00e9resser d'un point de vue technique.<\/p>\n<p>J'ai mentionn\u00e9 que le serveur LSP s'ex\u00e9cute en tant que processus s\u00e9par\u00e9, ce qui pr\u00e9sente un certain nombre d'avantages, notamment un espace d'adressage m\u00e9moire d\u00e9di\u00e9 de 4 Go pour la compr\u00e9hension du code. Si vous regardez la version 10.4 dans le gestionnaire des t\u00e2ches de Windows, vous verrez plusieurs processus DelphiLSP. Le premier contr\u00f4le plusieurs agents, et nous avons un agent d\u00e9di\u00e9 \u00e0 la fourniture de l'ach\u00e8vement et d'autres r\u00e9sultats, et un agent d\u00e9di\u00e9 \u00e0 la fourniture d'informations sur les erreurs.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/community.idera.com\/resized-image\/__size\/640x480\/__key\/communityserver-blogs-components-weblogfiles\/00-00-00-03-37\/10.4-_2D00_-lsp-_2D00_-task-manager-trimmed-2.PNG\" alt=\" \" \/><\/p>\n<p>\u00c0 ma connaissance, nous sommes le seul serveur LSP \u00e0 utiliser une architecture multiprocessus.<\/p>\n<h3>Qualit\u00e9<\/h3>\n<p>Dans le cadre de cette mise en \u0153uvre, nous avons \u00e9galement trouv\u00e9 et corrig\u00e9 un certain nombre de probl\u00e8mes qui affectaient l'ach\u00e8vement du code dans le pass\u00e9.<\/p>\n<h2>Prochaines \u00e9tapes<\/h2>\n<p>La nouvelle compl\u00e9tion de code est diff\u00e9rente de la compl\u00e9tion de code de la version 10.3.3 et des versions ant\u00e9rieures. Nous nous sommes efforc\u00e9s de la rendre aussi similaire que possible, notamment en triant les \u00e9l\u00e9ments commen\u00e7ant par un \u00e9l\u00e9ment avant les autres, afin qu'elle vous soit famili\u00e8re lorsque vous l'utiliserez pour la premi\u00e8re fois. Nous esp\u00e9rons qu'en quelques minutes, vous vous y habituerez tellement que vous ne voudrez plus jamais revenir \u00e0 la version 10.3.3 ! Mais nous ne voulons pas pr\u00e9senter cette version comme \u00e9tant exactement la m\u00eame : vous trouverez des diff\u00e9rences.<\/p>\n<p>Le nouveau Code Insight dans Delphi 10.4 r\u00e9sout de nombreux probl\u00e8mes et rend l'utilisation de l'IDE beaucoup plus agr\u00e9able et r\u00e9active pour vous aussi. Sans parler des r\u00e9sultats suppl\u00e9mentaires, qui peuvent \u00eatre extr\u00eamement utiles. Nous avons l'intention de continuer \u00e0 travailler sur ce projet afin d'avancer vers les objectifs d\u00e9crits ci-dessus. Dans la version 10.4, nous et nos b\u00eata-testeurs avons trouv\u00e9 que c'\u00e9tait un excellent ajout \u00e0 l'IDE.<\/p>\n<p>En outre, nous avons ajout\u00e9 deux nouvelles fonctionnalit\u00e9s : la possibilit\u00e9 d'explorer votre code \u00e0 l'aide de la compl\u00e9tion de code et l'utilisation de Code Insight, y compris la compl\u00e9tion de code et d'autres fonctionnalit\u00e9s de Code Insight, pendant le d\u00e9bogage.<\/p>\n<p>Nous sommes tr\u00e8s enthousiastes \u00e0 propos de cette fonctionnalit\u00e9. Asynchrone. IDE r\u00e9actif. Protocole moderne. Prise en charge d'autres langues. Compl\u00e9tion de code pendant le d\u00e9bogage. C'est une excellente chose. Nous avons h\u00e2te que vous obteniez la version 10.4 et que vous l'essayiez vous-m\u00eame.<\/p>\n<div class=\"content-scrollable-wrapper\">\n<table>\n<tbody>\n<tr>\n<td>\"<\/td>\n<td>Le nouveau CodeInsight bas\u00e9 sur le LSP est fantastique. Il va r\u00e9volutionner le produit.<\/p>\n<p>- Nick Hodges, qui a utilis\u00e9 un aper\u00e7u de la version b\u00eata<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><i>Si vous avez souscrit \u00e0 un abonnement de mise \u00e0 jour, l'un des avantages est l'acc\u00e8s aux versions b\u00eata des prochaines versions. Il est encore temps de rejoindre notre programme b\u00eata pour la version 10.4 !<\/i><\/p>\n<p><i>Il s'agit d'un aper\u00e7u d'une version \u00e0 venir de RAD Studio. Il peut toujours y avoir des bogues ou des changements de derni\u00e8re minute. Rien n'est d\u00e9finitif tant que la version n'est pas officiellement disponible.<\/i><\/p>\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>Dans la version 10.4, nous avons retravaill\u00e9 la compl\u00e9tion de code et d'autres fonctionnalit\u00e9s. Il s'agit de l'un des changements les plus importants apport\u00e9s \u00e0 l'IDE depuis une dizaine d'ann\u00e9es. Que faisons-nous...<\/p>","protected":false},"author":7,"featured_media":7108,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[130],"tags":[],"class_list":["post-7107","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-products"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>New in Delphi 10.4: Redesigned Code Insight - Barnsten.com<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.barnsten.com\/fr\/nouveaute-dans-delphi-10-4-apercu-du-code-remanie\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"New in Delphi 10.4: Redesigned Code Insight - Barnsten.com\" \/>\n<meta property=\"og:description\" content=\"In 10.4, we\u2019ve reworked code completion and other features. It\u2019s one of the most significant changes to the IDE in a decade. What do we...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.barnsten.com\/fr\/nouveaute-dans-delphi-10-4-apercu-du-code-remanie\/\" \/>\n<meta property=\"og:site_name\" content=\"Barnsten.com\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-07T06:40:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-05-07T06:42:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.barnsten.com\/wp-content\/uploads\/2020\/05\/01_Coming-Soon_Get-Excited_600x200.png-1200x400-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"600\" \/>\n\t<meta property=\"og:image:height\" content=\"200\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Margreet van Muyden\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Margreet van Muyden\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.barnsten.com\\\/new-in-delphi-10-4-redesigned-code-insight\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.barnsten.com\\\/new-in-delphi-10-4-redesigned-code-insight\\\/\"},\"author\":{\"name\":\"Margreet van Muyden\",\"@id\":\"https:\\\/\\\/www.barnsten.com\\\/nl\\\/#\\\/schema\\\/person\\\/7b5b9f84835f241d5ed9c9b0425cc414\"},\"headline\":\"New in Delphi 10.4: Redesigned Code Insight\",\"datePublished\":\"2020-05-07T06:40:22+00:00\",\"dateModified\":\"2020-05-07T06:42:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.barnsten.com\\\/new-in-delphi-10-4-redesigned-code-insight\\\/\"},\"wordCount\":2214,\"publisher\":{\"@id\":\"https:\\\/\\\/www.barnsten.com\\\/nl\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.barnsten.com\\\/new-in-delphi-10-4-redesigned-code-insight\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.barnsten.com\\\/wp-content\\\/uploads\\\/2020\\\/05\\\/01_Coming-Soon_Get-Excited_600x200.png-1200x400-1.png\",\"articleSection\":[\"Products\"],\"inLanguage\":\"fr-FR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.barnsten.com\\\/new-in-delphi-10-4-redesigned-code-insight\\\/\",\"url\":\"https:\\\/\\\/www.barnsten.com\\\/new-in-delphi-10-4-redesigned-code-insight\\\/\",\"name\":\"New in Delphi 10.4: Redesigned Code Insight - Barnsten.com\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.barnsten.com\\\/nl\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.barnsten.com\\\/new-in-delphi-10-4-redesigned-code-insight\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.barnsten.com\\\/new-in-delphi-10-4-redesigned-code-insight\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.barnsten.com\\\/wp-content\\\/uploads\\\/2020\\\/05\\\/01_Coming-Soon_Get-Excited_600x200.png-1200x400-1.png\",\"datePublished\":\"2020-05-07T06:40:22+00:00\",\"dateModified\":\"2020-05-07T06:42:18+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.barnsten.com\\\/new-in-delphi-10-4-redesigned-code-insight\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.barnsten.com\\\/new-in-delphi-10-4-redesigned-code-insight\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.barnsten.com\\\/new-in-delphi-10-4-redesigned-code-insight\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.barnsten.com\\\/wp-content\\\/uploads\\\/2020\\\/05\\\/01_Coming-Soon_Get-Excited_600x200.png-1200x400-1.png\",\"contentUrl\":\"https:\\\/\\\/www.barnsten.com\\\/wp-content\\\/uploads\\\/2020\\\/05\\\/01_Coming-Soon_Get-Excited_600x200.png-1200x400-1.png\",\"width\":600,\"height\":200},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.barnsten.com\\\/new-in-delphi-10-4-redesigned-code-insight\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.barnsten.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"New in Delphi 10.4: Redesigned Code Insight\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.barnsten.com\\\/nl\\\/#website\",\"url\":\"https:\\\/\\\/www.barnsten.com\\\/nl\\\/\",\"name\":\"Barnsten.com\",\"description\":\"Development Software &amp; Database tools\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.barnsten.com\\\/nl\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.barnsten.com\\\/nl\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.barnsten.com\\\/nl\\\/#organization\",\"name\":\"Barnsten B.V.\",\"url\":\"https:\\\/\\\/www.barnsten.com\\\/nl\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.barnsten.com\\\/nl\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.barnsten.com\\\/wp-content\\\/uploads\\\/2019\\\/04\\\/Barnsten-logo-oranje@3x.png\",\"contentUrl\":\"https:\\\/\\\/www.barnsten.com\\\/wp-content\\\/uploads\\\/2019\\\/04\\\/Barnsten-logo-oranje@3x.png\",\"width\":406,\"height\":150,\"caption\":\"Barnsten B.V.\"},\"image\":{\"@id\":\"https:\\\/\\\/www.barnsten.com\\\/nl\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.barnsten.com\\\/nl\\\/#\\\/schema\\\/person\\\/7b5b9f84835f241d5ed9c9b0425cc414\",\"name\":\"Margreet van Muyden\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b6cb2b1994a759ceea85e5bcb172de4dc431649686257679ce7eb46fb4bde80d?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b6cb2b1994a759ceea85e5bcb172de4dc431649686257679ce7eb46fb4bde80d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b6cb2b1994a759ceea85e5bcb172de4dc431649686257679ce7eb46fb4bde80d?s=96&d=mm&r=g\",\"caption\":\"Margreet van Muyden\"},\"url\":\"https:\\\/\\\/www.barnsten.com\\\/fr\\\/author\\\/margreet\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Nouveau dans Delphi 10.4 : Code Insight remani\u00e9 - Barnsten.com","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.barnsten.com\/fr\/nouveaute-dans-delphi-10-4-apercu-du-code-remanie\/","og_locale":"fr_FR","og_type":"article","og_title":"New in Delphi 10.4: Redesigned Code Insight - Barnsten.com","og_description":"In 10.4, we\u2019ve reworked code completion and other features. It\u2019s one of the most significant changes to the IDE in a decade. What do we...","og_url":"https:\/\/www.barnsten.com\/fr\/nouveaute-dans-delphi-10-4-apercu-du-code-remanie\/","og_site_name":"Barnsten.com","article_published_time":"2020-05-07T06:40:22+00:00","article_modified_time":"2020-05-07T06:42:18+00:00","og_image":[{"width":600,"height":200,"url":"https:\/\/www.barnsten.com\/wp-content\/uploads\/2020\/05\/01_Coming-Soon_Get-Excited_600x200.png-1200x400-1.png","type":"image\/png"}],"author":"Margreet van Muyden","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"Margreet van Muyden","Dur\u00e9e de lecture estim\u00e9e":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.barnsten.com\/new-in-delphi-10-4-redesigned-code-insight\/#article","isPartOf":{"@id":"https:\/\/www.barnsten.com\/new-in-delphi-10-4-redesigned-code-insight\/"},"author":{"name":"Margreet van Muyden","@id":"https:\/\/www.barnsten.com\/nl\/#\/schema\/person\/7b5b9f84835f241d5ed9c9b0425cc414"},"headline":"New in Delphi 10.4: Redesigned Code Insight","datePublished":"2020-05-07T06:40:22+00:00","dateModified":"2020-05-07T06:42:18+00:00","mainEntityOfPage":{"@id":"https:\/\/www.barnsten.com\/new-in-delphi-10-4-redesigned-code-insight\/"},"wordCount":2214,"publisher":{"@id":"https:\/\/www.barnsten.com\/nl\/#organization"},"image":{"@id":"https:\/\/www.barnsten.com\/new-in-delphi-10-4-redesigned-code-insight\/#primaryimage"},"thumbnailUrl":"https:\/\/www.barnsten.com\/wp-content\/uploads\/2020\/05\/01_Coming-Soon_Get-Excited_600x200.png-1200x400-1.png","articleSection":["Products"],"inLanguage":"fr-FR"},{"@type":"WebPage","@id":"https:\/\/www.barnsten.com\/new-in-delphi-10-4-redesigned-code-insight\/","url":"https:\/\/www.barnsten.com\/new-in-delphi-10-4-redesigned-code-insight\/","name":"Nouveau dans Delphi 10.4 : Code Insight remani\u00e9 - Barnsten.com","isPartOf":{"@id":"https:\/\/www.barnsten.com\/nl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.barnsten.com\/new-in-delphi-10-4-redesigned-code-insight\/#primaryimage"},"image":{"@id":"https:\/\/www.barnsten.com\/new-in-delphi-10-4-redesigned-code-insight\/#primaryimage"},"thumbnailUrl":"https:\/\/www.barnsten.com\/wp-content\/uploads\/2020\/05\/01_Coming-Soon_Get-Excited_600x200.png-1200x400-1.png","datePublished":"2020-05-07T06:40:22+00:00","dateModified":"2020-05-07T06:42:18+00:00","breadcrumb":{"@id":"https:\/\/www.barnsten.com\/new-in-delphi-10-4-redesigned-code-insight\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.barnsten.com\/new-in-delphi-10-4-redesigned-code-insight\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.barnsten.com\/new-in-delphi-10-4-redesigned-code-insight\/#primaryimage","url":"https:\/\/www.barnsten.com\/wp-content\/uploads\/2020\/05\/01_Coming-Soon_Get-Excited_600x200.png-1200x400-1.png","contentUrl":"https:\/\/www.barnsten.com\/wp-content\/uploads\/2020\/05\/01_Coming-Soon_Get-Excited_600x200.png-1200x400-1.png","width":600,"height":200},{"@type":"BreadcrumbList","@id":"https:\/\/www.barnsten.com\/new-in-delphi-10-4-redesigned-code-insight\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.barnsten.com\/"},{"@type":"ListItem","position":2,"name":"New in Delphi 10.4: Redesigned Code Insight"}]},{"@type":"WebSite","@id":"https:\/\/www.barnsten.com\/nl\/#website","url":"https:\/\/www.barnsten.com\/nl\/","name":"Barnsten.com","description":"Logiciels de d\u00e9veloppement et outils de base de donn\u00e9es","publisher":{"@id":"https:\/\/www.barnsten.com\/nl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.barnsten.com\/nl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/www.barnsten.com\/nl\/#organization","name":"Barnsten B.V.","url":"https:\/\/www.barnsten.com\/nl\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.barnsten.com\/nl\/#\/schema\/logo\/image\/","url":"https:\/\/www.barnsten.com\/wp-content\/uploads\/2019\/04\/Barnsten-logo-oranje@3x.png","contentUrl":"https:\/\/www.barnsten.com\/wp-content\/uploads\/2019\/04\/Barnsten-logo-oranje@3x.png","width":406,"height":150,"caption":"Barnsten B.V."},"image":{"@id":"https:\/\/www.barnsten.com\/nl\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.barnsten.com\/nl\/#\/schema\/person\/7b5b9f84835f241d5ed9c9b0425cc414","name":"Margreet van Muyden","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/secure.gravatar.com\/avatar\/b6cb2b1994a759ceea85e5bcb172de4dc431649686257679ce7eb46fb4bde80d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/b6cb2b1994a759ceea85e5bcb172de4dc431649686257679ce7eb46fb4bde80d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b6cb2b1994a759ceea85e5bcb172de4dc431649686257679ce7eb46fb4bde80d?s=96&d=mm&r=g","caption":"Margreet van Muyden"},"url":"https:\/\/www.barnsten.com\/fr\/author\/margreet\/"}]}},"_links":{"self":[{"href":"https:\/\/www.barnsten.com\/fr\/wp-json\/wp\/v2\/posts\/7107","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.barnsten.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.barnsten.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.barnsten.com\/fr\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.barnsten.com\/fr\/wp-json\/wp\/v2\/comments?post=7107"}],"version-history":[{"count":0,"href":"https:\/\/www.barnsten.com\/fr\/wp-json\/wp\/v2\/posts\/7107\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.barnsten.com\/fr\/wp-json\/wp\/v2\/media\/7108"}],"wp:attachment":[{"href":"https:\/\/www.barnsten.com\/fr\/wp-json\/wp\/v2\/media?parent=7107"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.barnsten.com\/fr\/wp-json\/wp\/v2\/categories?post=7107"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.barnsten.com\/fr\/wp-json\/wp\/v2\/tags?post=7107"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}