L'EDI Lazarus 1.8 est disponible
Avec du retard mais fort de sérieuses améliorations

Le , par gvasseur58, Responsable Delphi


Après une attente de plusieurs mois, la version 1.8 de Lazarus est enfin disponible au téléchargement. Comme attendu, elle s’appuie sur la version 3.0.4 du compilateur Free Pascal : c’est d’ailleurs dans l’attente de la sortie officielle de ce dernier que la publication de Lazarus a pris du retard, le principe étant que l’EDI reste toujours fondé sur la dernière version stable du compilateur.
Les changements concernent à la fois la LCL (la bibliothèque standard de composants), l’EDI et une série de composants. Comme pour chaque nouvelle version, quelques adaptations limitées d’un code ancien pourront être nécessaires.

La LCL


  • La LCL s’adapte désormais aux hautes résolutions. Ainsi, TApplication et TCustomForm disposent à présent d’une propriété Scaled liée aux options DPI du projet en cours. L’EDI Lazarus lui-même supporte ces résolutions.
  • Une fiche peut être centrée par rapport à la zone de travail, dépendant elle-même de DefaultMonitor, grâce à la nouvelle valeur de position poWorkAreaCenter, permettant ainsi une meilleure prise en compte des écrans multiples.
  • TToolButton dispose du nouveau style tbsButtonDrop qui dessine une flèche pointant vers le bas à droite du bouton. Contrairement à tbsDropDown, ce bouton ne comporte qu’une simple zone de clic afin d’activer DropDownMenu s’il est assigné. Par la même occasion, un nouvel événement OnArrowClick est déclenché en cas de clic sur la flèche, remplaçant ainsi l’ancien comportement qui déclenchait un OnClick plus général. Par ailleurs, une nouvelle propriété DropDownWidth de TToolBar permet de définir la largeur d’un bouton lorsque son style est fixé à tbsDropDown.
  • Les éléments d’un menu (TMainMenu, TPopupMenu, TMenuItem) ont un fonctionnement qui se rapproche de celui de Delphi avec la propriété OwnerDraw. Malheureusement, cette amélioration ne concerne pour le moment que les utilisateurs de Windows.
  • Enfin, le composant TDateTimePicker est muni d’une propriété Options qui autorise la modification de quelques aspects de son affichage tandis que le nouveau composant non visuel TTaskDialog permet à l’exécution d’afficher des dialogues enrichis comme ceux proposés par Windows, y compris sur les autres plates-formes.




L’EDI


  • L’utilitaire en ligne de commande lazbuild (qui permet entre autres de construire l’EDI lui-même) est doté d’une nouvelle option --add-package-link afin d’enregistrer des paquets sans les reconstruire.
  • Les Quick fixes, qui autorisent une correction rapide de certaines erreurs signalées dans la boîte des messages, s’enrichissent d’une possibilité de désactiver les conseils, notes et avertissements.
  • La visibilité par défaut d’une méthode peut être définie dans les options des outils de code : suivre Complétion de classe puis Section par défaut des méthodes.
  • Le modèle de code case ofall, qui crée automatiquement une structure case of à partir d’une série de cas, indente désormais le code produit selon les options adoptées par l’éditeur.
  • La combinaison de touches Ctrl-Enter a été rendue plus performante dans sa reconnaissance des fichiers à ouvrir, en particulier avec les directives $I et $R.
  • L’éditeur est dorénavant doté d’une coloration de la structure du code source. Cette coloration est obtenue simplement en cochant la case Schéma (global) dans les Options de Éditeur, partie Affichage, sous-partie Balisage et correspondances.




Pour ceux qui désireraient étendre les fonctionnalités de l’EDI ou tout simplement en tirer parti, qu’ils sachent que la nouvelle fonction LazarusIDE.FindUnitsOfOwner peut lister l’ensemble des unités utilisées par un projet ou un paquet.

On notera enfin que la prise en charge de Win98 et WinNT est abandonnée.

Composants


  • TSpinEditEx et TFloatSpinEditEx sont les versions étendues et indépendantes des plates-formes de TSpinEdit et TFloatSpinEdit. Ils apportent en prime la reconnaissance d’une valeur indéterminée (NullValue) et la configuration possible du comportement du composant si le texte entré n’est pas un nombre.
  • La bibliothèque TAChart comprend un nouveau composant TChartComboBox permettant de choisir des styles selon la valeur de sa propriété Mode : style de la brosse, style du crayon, largeur du crayon, style du pointeur.
  • Il est à noter que le paquet editortoolbar.lpk fait à présent partie de l’EDI lui-même et qu’il n’est par conséquent plus disponible en tant que tel.


Modifications à apporter à un code ancien


Même si les développeurs de Lazarus cherchent à conserver une compatibilité ascendante forte, il existe néanmoins quelques changements à prendre en compte pour la maintenance d’un code ancien.

Comme annoncé dès la version 1.6, certaines fonctions de traitement des chaînes sont obsolètes et ne sont plus accessibles par défaut. Malheureusement, le système adopté est loin d’être totalement cohérent et les informations fournies dans le wiki de Lazarus sont souvent approximatives. Ainsi est-il conseillé de remplacer les fonctions préfixées par UTF8 par leur équivalent Delphi préfixé par Ansi. Un simple essai avec la fonction Pos appliquée à un mot accentué montrera qu’il faut toujours utiliser UTF8Pos. Length renvoie elle aussi une valeur erronée : il faut utiliser UTF8Length pour obtenir une longueur correcte d’une chaîne accentuée.

D’autres incompatibilités de moindre importance sont fournies dans la page en anglais relative aux notes sur la version 1.8 de Lazarus.

Vous pouvez télécharger cette version de Lazarus ici.

Source : Site Lazarus

Que pensez-vous de cette nouvelle version de Lazarus ?

Avez-vous l'intention d'utiliser cette nouvelle version de l'EDI ?

Retrouvez les meilleurs cours et tutoriels pour apprendre la programmation avec Lazarus.


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de Jon Shannow Jon Shannow - Membre expert https://www.developpez.com
le 07/12/2017 à 8:59
Citation Envoyé par gvasseur58 Voir le message
Que pensez-vous de cette nouvelle version de Lazarus ?

Avez-vous l'intention d'utiliser cette nouvelle version de l'EDI ?
Je pense qu'il y a de bonnes choses, mais que je vais attendre avant de l'utiliser. La version actuelle me suffit.
Avatar de Jipété Jipété - Expert éminent https://www.developpez.com
le 07/12/2017 à 9:23
Citation Envoyé par gvasseur58 Voir le message
Que pensez-vous de cette nouvelle version de Lazarus ?
Que je n'en aurais pas grand chose à dire, je pense :
Citation Envoyé par gvasseur58 Voir le message
Malheureusement, cette amélioration ne concerne pour le moment que les utilisateurs de Windows.
Et bim !

Citation Envoyé par gvasseur58 Voir le message
On notera enfin que la prise en charge de Win98 et WinNT est abandonnée.
Gardez une vieille version dans un coin, dans une machine virtuelle, on ne sait jamais !

Citation Envoyé par gvasseur58 Voir le message
Avez-vous l'intention d'utiliser cette nouvelle version de l'EDI ?
Vais patienter un mois ou deux, des fois qu'il y aurait des patches en urgence...

Dans l'attente, est-ce que quelqu'un pourrait me confirmer que la persistance du repliage de code fonctionne vraiment, avec par exemple une unité de 1000 à 2000 lignes ?
Parce qu'à l'heure actuelle, à chaque réouverture d'un projet en cours, il faut commencer par replier à nouveau le code qui avait déjà été replié la fois d'avant, une calamité...

Mais merci pour l'info, Gilles

Et rions un peu, en conclusion :

Avatar de gvasseur58 gvasseur58 - Responsable Delphi https://www.developpez.com
le 07/12/2017 à 10:17
Citation Envoyé par Jipété Voir le message
Et rions un peu, en conclusion :

En fait, je me suis aperçu de cette erreur peu de temps après sa mise en ligne, mais j'attendais qu'elle soit signalée... Je me suis dit qu'elle ne manquait pas de saveur, n'est-ce pas ?
Avatar de Jipété Jipété - Expert éminent https://www.developpez.com
le 07/12/2017 à 11:43
Citation Envoyé par gvasseur58 Voir le message
Je me suis dit qu'elle ne manquait pas de saveur, n'est-ce pas ?
Elle a bon goût !

omg, ça y est, ça part en live, déjà !
Avatar de Aiekick Aiekick - Membre expérimenté https://www.developpez.com
le 07/12/2017 à 13:42
C'est utilisé encore dans quels milieux le Pascal ? Pour de l'embarqué ? On peut faire des interfaces graphiques avec ou c'est plutôt des applis console ?

Quels sont les avantages par rapport au C, ou langages de plus haut niveau ?
Avatar de tourlourou tourlourou - Modérateur https://www.developpez.com
le 07/12/2017 à 14:37
En résumé : le Pascal objet utilisé au sein des EDI/RAD Delphi et lazarus permet notamment le développement visuel rapide d'applications graphiques multi-plateformes compilées.
Par rapport au C, il ne permet pas nativement le développement de programmes de très bas niveau (style drivers tournant en ring 0 sous Windows), mais rien d'autre d'impossible.
Il offre une syntaxe plus rigoureuse et plus claire (c'est un langage idéal pour la pédagogie) et la compilation est rapide, en une seule passe.
Il permet également l'utilisation aisée de librairies, composants visuels et unités externes.
A titre d'exemple, le client Skype était jusqu'il y a peu écrit sous Delphi.
Avatar de microb microb - Membre régulier https://www.developpez.com
le 07/12/2017 à 18:55
Bonjour,
J'ai voulu installer cette version a partir des 3 fichiers .deb (fpc,fpcsrc,lazarus)sur linux,
mais lors de l'installation de fpc_3.0.4-1_amd64.deb j'ai en rouge le message suivant:
Erreur: Casse le paquet existant "fpc" car en conflit avec fpc()
Avatar de gbegreg gbegreg - Membre éprouvé https://www.developpez.com
le 07/12/2017 à 22:23
Citation Envoyé par Aiekick Voir le message
c'est utilisé encore dans quels milieu le pascal ? pour de l'embarqué ? on peut faire des interfaces graphiques avec ou c'est plutot des appli console ?

quelles sont les avantages par rapport au C, ou langages de plus haut niveau ?
En complément de la réponse de tourlourou, il y a quelques mois, à l'occasion des 22 ans de Delphi (je sais : ce n'est pas Lazarus mais c'est du Pascal Objet ), l'éditeur de Delphi Embarcadero avait réalisé un petit magazine avec quelques exemples récents d'utilisations et d'applications. Le magazine est en ligne ici.
Avatar de sergio_is_back sergio_is_back - Membre habitué https://www.developpez.com
le 08/12/2017 à 9:02
Citation Envoyé par Aiekick Voir le message
c'est utilisé encore dans quels milieu le pascal ? pour de l'embarqué ? on peut faire des interfaces graphiques avec ou c'est plutôt des appli console ?

quelles sont les avantages par rapport au C, ou langages de plus haut niveau ?
Dans l'industrie, dans l'embarqué (là c'est plus tôt FreePascal surtout sur tout ce qui est ARM), etc.

Je développe depuis plus 20 ans en DELPHI et ma boîte a des dizaines de clients.
On peut faire des applications console, des services, des IHM client lourd magnifiques, et même des services WEB...
Des applications Android et iOS avec les bibliothèques FireMonkey.

Les avantages par rapport au C :

Le Pascal est très proche du hardware (il est possible d'inclure du code assembleur, de détourner des interruptions, etc.), les pointeurs se manipulent aisément, ils peuvent être typés ce qui évite bien des erreurs... De plus, le Pascal apporte le support du modèle objet.

Ajoute à cela une large communauté, des bibliothèques libres en quantité pour tout et n'importe quoi.

J'ai coutume de dire que si tu ne sais pas coder en truc en Pascal, c'est que ce n'est tout simplement pas codable...
Avatar de ManyTwo ManyTwo - Nouveau membre du Club https://www.developpez.com
le 08/12/2017 à 11:10
@sergio_is_back, c'est vraiment une question de point de vue alors, car certains de tes arguments sont justement pour nous (dans ma boîte) l'inverse et notamment ce qui nous pose problème.
C'est d'autant plus flagrant que deux "environnements" de développement ce côtoient dans la boite : DotNet et Delphi.

Je parle de la "large communauté" et des "bibliothèques libres en quantité", et bien nous pensons justement tout l'inverse. Pour un même problème, il est souvent difficile de trouver des ressources en Delphi. Que ce soit en terme de recherche de bugs/problèmes, exemples etc. (par exemple des recherches sur StackOverflow), cela est souvent limité ou très vieux. Bien sûr comparé aux langages les plus populaires.

Pour les bibliothèques disponibles en quantité, franchement pareil, pas vraiment d'accord. Comparé aux ressources disponibles pour les autres langages "génériques" (Java, .net/C#, etc.) ou encore web, il y a un gap énorme. Il n'y a qu'à regarder les différents package managers, comme NuGet, npm etc.
Il en est pareil pour le support par des produits tiers : combien de fois nous nous sommes retrouvés à développer nous-mêmes car, par exemple, un service fournit son API en C#, Java, PHP, Python, etc., mais Pascal non. Alors multiplé par n fois, eh bien ca coûte vite cher.

Depuis 6 ans que je travaille dans ce double contexte, je me rends de plus en plus compte des manques de ce niveau. On se retrouve souvent à devoir soit faire nous-mêmes, soit payer car les seules "bibliothèques" vraiment fiables sont payantes, et souvent assez chères car peu de concurrence.

Attention, Pascal et Delphi ont des qualités, je ne dis pas le contraire, je suis assez d'accord avec tes premiers arguments, à part pour le développement mobile, qui m'avait laissé une impression "limitée" après l'effet "wahou" d'une app basique.

En fait, j'ai l'impression que le problème est le suivant :

L'environnement Delphi n'a pas d'avantage particulier, tout en étant globalement bon.
Pour un langage généraliste, il reste trop limité en terme de communauté ou de composants / bibliothèques. De ressources quoi.

Et l'utilisation en tant que langage spécialisé, eh bien dans chaque domaine il y a plus adapté que Delphi. Du coup la plupart des développement Delphi se font à cause de l'historique des boîtes, soit en terme de logiciel soit en terme de compétences.

J'espère que Delphi va trouver le bon équilibre, mais vu la concurrence et la multitude de choix sur ce marché, j'y crois moyen.
Même les innovations n'attireront pas vraiment à cause de l'image de Delphi auprès de beaucoup de dev. Ils iront plutôt vers de la nouveauté, même moins aboutie. Ce qui est dommage on est d'accord.
Responsables bénévoles de la rubrique Lazarus : Alcatîz - Gilles Vasseur -