Étiquette : WebDev

Vincent Lecomte
[WD21] Erreur vTable invalide à l’adresse X

[WD21] Erreur vTable invalide à l’adresse X

Depuis hier l’Update 3 des éditeurs Windev, Webdev et Windev Mobile est disponible. Il s’agit de la version ayant passé avec succès le premier niveau de validation donc celle-ci n’est pas définitive. Installée sur deux PC différents, impossible de développer sans obtenir une erreur de ce genre :

vTable invalide à l'adresse 0x1f8e00e5
Pile:
0x1f8e00e5
0x7c406e56
0x98a28ab0
0x440f3678
0x601f527a

Cette erreur – qui apparait au bout d’une minute ou deux – est généralement liée au dongle / aux drivers de celui-ci (Sentinel HASP). Seulement voilà, les pilotes installés sont bien les derniers (7.41), et le problème se produit aussi bien sur Windows 8.1 que sur la 10.

Et bien sûr… Impossible d’aller plus loin. La seule issue possible est de cliquer sur le bouton Fermer. L’erreur a été signalée au support technique plus tôt dans l’après-midi, ainsi que sur les forums.

Si comme moi vous avez pris l’habitude de décocher la sauvegarde lors de l’installation des mises à jour de produits PC SOFT, alors vous risquez d’être à l’arrêt en attendant un correctif. Espérons que ça ne soit pas trop long…

Edit du 1/6/2016 – Pour information le bug se produit sur Windows 8.1 et 10 mais surtout, sur 3 machines au total, ayant des périphériques USB complètement différents. Tous étaient en Update 2 et Windev fonctionnait sans problème jusqu’à cette mise à jour.

Edit du 2/6/2016 – J’ai effectué quelques tests en ne laissant branché qu’un dongle et le phénomène est le même. J’ai dû lancer un outil de diagnostic et transférer un fichier au support, malheureusement en cette fin d’après-midi je n’ai aucune réponse concrète. J’ai en attendant désinstallé les pilotes et les 2 dongles, puis réinstallé proprement le dernier driver Sentinel HASP, sans succès.

Edit du 3/6/2016 – 3 jours déjà mais on tient le coup. Après l’exécution de l’outil de diagnostic, le support a relevé un conflit, sans en dire beaucoup plus. Si celui-ci est confirmé après l’envoi du deuxième fichier, l’article sera mis à jour en conséquence.

Le conflit est en fait dû à un pilote HP pour les claviers (à priori HP Hotkey Support). PC SOFT m’a envoyé un correctif, que vous pouvez télécharger en cliquant sur ce lien (pack_fr_98553.zip).

Ensuite, décompressez les exécutables de Webdev 21 dans :

Webdev21.exe, Webdev 21\Programmes
Webdev64local.exe, Webdev 21\Programmes
Webdev64net.exe, Webdev 21\Programmes
– Données\Webdev.wdl, Webdev 21\Programmes\Données

Idem pour Windev:

Windev21.exe, Windev 21\Programmes
Windev64local.exe, Windev 21\Programmes
Windev64net.exe, Windev 21\Programmes
– Données\Windev.wdl, Windev 21\Programmes\Données

Idem pour Windev Mobile :

Wd21Mobile.exe, Windev Mobile 21\Programmes
Windevmobile64local.exe, Windev Mobile 21\Programmes
Windevmobile64net.exe, Windev Mobile 21\Programmes
– Données\Windev Mobile.wdl, Windev Mobile 21\Programmes\Données

[WD21] Envoyer un email (II)

[WD21] Envoyer un email (II)

Nous avions vu il y a presque un an comment envoyer un email à l’aide de Windev. Cette fois nous allons utiliser les structures mises à notre disposition pour faciliter la programmation. C’est surtout au niveau de la connexion qu’il va y avoir du changement.

Connexion

Nous allons utiliser une structure de type EmailSessionSMTP. On va alors passer toutes les options à l’aide des différentes propriétés, puis appeler la fonction EmailOuvreSession() en passant cette unique variable.

MaSession est un EmailSessionSMTP
MaSession..AdresseServeur = GP_Param_s_SMTPServer
MaSession..Port = GP_Param_i_SMTPPort
MaSession..Nom  = GP_Param_s_SMTPUsername
MaSession..MotDePasse = GP_Param_s_SMTPPassword
MaSession..Option = emailOptionSécuriséTLS
bOpenSessMail = EmailOuvreSession(MaSession)

Il faudra ensuite tester le booléen pour voir si la session est ouverte.

Préparer le message

Pour le coup, rien ne change. On construit le message à l’aide d’une variable de type Email.

MonMessage est un Email
MonMessage..AdresseExpéditeur = GP_Param_s_SMTPExpe
MonMessage..Expediteur  = "Nom <" + GP_Param_s_SMTPExpe + ">"
MonMessage..Sujet = "Reporting du 28/4/2016"
MonMessage..Message = "Contenu du message au format brut"

Il faut bien entendu spécifier les destinataires (à, Cc, Cci) :

Ajoute(MonMessage..Destinataire,sDesti)
Ajoute(MonMessage..Cc,GP_Param_s_SMTPCopyTo)
Ajoute(MonMessage..Cci,GP_Param_s_SMTPCopyTo2)

Ou une pièce jointe (par exemple un fichier PDF) :

monAttache..Nom=fExtraitChemin(sFile,fFichier+fExtension)
monAttache..Contenu=fChargeTexte(sFile)
monAttache..ContentType="application/pdf"
monAttache..ContentDescription="PDF Document"
Ajoute(MonMessage..Attache, monAttache)

Une fois que c’est fait, on peut envoyer…

Envoyer l’e-mail

Notre message est prêt : c’est parti ! Nous allons maintenant l’envoyer et puis fermer la session précédemment ouverte (voir plus haut). Nous allons utiliser la fonction EmailEnvoieMessage(). 2 paramètres doivent être passés en entrée : la structure contenant les infos de la session, et celle contenant les informations du message.

SI PAS EmailEnvoieMessage(MaSession,MonMessage) ALORS
 Erreur(ErreurInfo(errMessage))
SINON
 Utility.displayGreenToast("Email envoyé")
FIN

Ensuite, fermer la session…

EmailFermeSession(MaSession)

Et voilà 😉

[WB21] AWP et contextes

[WB21] AWP et contextes

J’ai récemment eu l’opportunité de suivre deux formations pour apprendre à utiliser Webdev. Il s’agit du logiciel développé par PC SOFT qui permet de réaliser des sites internet assez rapidement.

Lorsqu’on crée un site dynamique, le moteur WD210AWP.EXE va automatiquement instancier les contextes et la session de l’utilisateur. L’avantage est que toutes les variables et les connexions à la base de données sont persistantes tout au long de la session. Cependant, si la session est fermée, il faut impérativement en relancer une autre à l’aide de la fonction SiteDynamiqueAffiche() ou re-valider l’URL dans la barre d’adresses, sinon une erreur s’affiche lors des appels de page. Un comportement que l’on peut trouver rébarbatif.

Dans ce mode, il n’est pas possible de “structurer” le site ; toutes les pages sont appelées comme si elles se trouvaient à la racine du répertoire virtuel. De plus le référencement est impossible. On l’utilisera plus pour réaliser une application de type intranet.

L’autre solution consiste à utiliser les pages AWP. Ce sont des pages totalement indépendantes, un peu à l’image des pages PHP au final, et les contextes doivent être instanciés par le développeur. Cela nécessite bien sûr plus de manipulations mais cela entraine une grande liberté dans la gestion des sessions et des connexions utilisateur. Par exemple, cela vous permet de gérer votre espace membres sans avoir à utiliser le Groupware Utilisateur Intégré.

Les autres avantages sont les suivants :

  • La page existe physiquement en tant que fichier, pas de timeout lors de son appel.
  • Il n’y a pas de ressources consommée en continu sur le serveur.
  • Le référencement est possible.
  • Une page peut être mise à jour sans que tout le site ne doive être déployé à nouveau.

Bien sûr, comme ces pages ne permettent pas d’avoir une connexion permanente à la base de données, le positionnement dans les tables est perdu lors des appels suivants.

Variables globales

On va déclarer dans l’Initialisation du projet, des variables globales qui seront réutilisées partout sur notre site (par exemple, un identifiant de session que l’on générera, l’ID de l’utilisateur connecté, etc).

Configuration du contexte

Il faut alors demander à configurer le contexte ; cela se fait dans l’Initialisation du projet à nouveau (après connexion au site => permet d’éviter les soucis rencontrés avec les sessions prélancées).

ConfigureContexteAWP(ctxDisque,ctxIDCookieURL)

On demande à Webdev d’utiliser le contexte sur disque plutôt que par cookie. On va alors spécifier qu’on veut transmettre l’identifiant prioritairement par l’intermédiaire du cookie puis de l’URL. Nous n’utiliserons cependant pas cet identifiant.On va ensuite indiquer à Webdev les variables à déclarer dans le contexte pour qu’elles soient réutilisées à chaque fois lors d’un changement de page. La fonction DéclareContexteAWP(var) doit être utilisée dans l’Initialisation du projet s’il s’agit de variables globales au projet, ou dans les pages s’il s’agit de variables globales aux pages. En règle général il faut donc l’utiliser là où on déclare et instance ces variables.

DéclareContexteAWP(gsSessionId)
DéclareContexteAWP(gsUsername)
DéclareContexteAWP(gsKey)
DéclareContexteAWP(gsIP)
DéclareContexteAWP(gdhSessionDt)

Après, toujours dans l’initialisation, on peut imaginer la connexion à notre base de données.

// Initialiser la connexion.
gcMaConnexion..Provider  = hAccèsHFClientServeur
gcMaConnexion..BaseDeDonnées  = "MonSiteAwp"
gcMaConnexion..Utilisateur  = "admin"
gcMaConnexion..MotDePasse  = "password"
gcMaConnexion..Serveur   = "MONPC"
SI HOuvreConnexion(gcMaConnexion) ALORS
  gbDbConn = True
  SI HChangeConnexion("*",gcMaConnexion) ALORS
    gproc_initSession()
  SINON
    ...
  FIN
FIN

Une fois la connexion établie on a donc demandé à ouvrir la session. Dans cette fonction nous allons regarder à chaque fois si l’identifiant de session personnalisé n’est pas déjà défini (gsSessionId). Si celui-ci est vide, le contexte a été détruit (session fermée), sinon la session est considérée comme toujours active.

  • Si la variable est vide, on recrée tout simplement un identifiant de session et on écrit dans la base de données. Celui-ci doit bien sûr être unique.
  • Si ce n’est pas vide, on vérifie les variables utiles (IP, utilisateur, date de création) et on réagit en conséquence – soit suppression dans la base de données puis recréation, soit modification de la date de dernière action.

Les variables pour lesquelles on a déclaré le contexte peuvent être utilisées dans toutes les pages.

Quelques notes à propos de Webdev

En mode AWP on s’affranchit du surplus de Javascript dans les menus, dans les liens, ce qui peut assurer une meilleure compatibilité si l’utilisateur désactive l’exécution des scripts dans son navigateur.

Bien que l’outil soit très pratique dans l’ensemble, et que le résultat soit plutôt convaincant, on peut être dubitatif quant au code généré. En effet, le moteur crée de nombreuses tables en guise de layout, ce qui n’est pas recommandé en HTML5. On retrouve également dans ces éléments “table” de nombreux attributs “style” (notamment avec la hauteur définie à 100%). Tout cela fait penser à un code un peu… historique.

Une option dans la description du projet permet le positionnement par balise “div”. Celle-ci ne semble être prise en compte que pour les pages sans zone extensible. Dans mon projet l’activation de cette option n’a eu aucun effet, ce qui signifierait que mon layout actuel ne rentre pas dans les conditions. On pourrait aussi s’interroger sur la mention “déconseillé” placée juste à côté de la case à cocher. On peut supposer que cela entraine des problèmes lors de la disposition des différents éléments.

[WD21] Activation du Dump de débogage

[WD21] Activation du Dump de débogage

Quand WinDev se casse lamentablement la poire en indiquant que l’application a cessé de fonctionner et que Windows recherche une solution, vous avez la possibilité d’activer la génération du “dump de débogage“. Il ne restera alors qu’à essayer de reproduire le bug afin d’envoyer le fichier au support technique.

Ouvrez le menu Aide, ensuite cliquez sur “A propos de WINDEV“.

Tout en maintenant la touche CTRL enfoncée, cliquez sur le logo de WD, qui se trouve juste à droite des informations de version. Une boite de dialogue apparait alors.

Cliquez sur le bouton “Activer pour 10 jours“. Redémarrez ensuite l’EDI. Vous constaterez un changement au niveau des couleurs de l’interface pour vous indiquer que le débogage est actif. Essayez alors de reproduire votre bug ; si WD se plante, un fichier dump est alors généré dans C:\PCSOFTDUMP. Transmettez alors le fichier au support. Pour désactiver le mode de débogage, retournez dans la fenêtre “A propos“, effectuez de nouveau un CTRL+Clic sur le logo, puis choisissez tout simplement “Désactiver”. Relancez à nouveau pour que les changements soient effectifs.

Gardez à l’esprit que, malheureusement, PC SOFT n’interviendra pas si vous utilisez une version antérieure à celle qu’ils proposent en téléchargement / achat. En effet, une fois la nouvelle version sortie, il n’y a (presque) plus la possibilité de demander un patch correctif.Notez enfin que l’astuce fonctionne pour toutes les versions (et les éditeurs), même si la façon d’accéder à la fenêtre “A propos” peut différer.

[WD21] La pré-version en téléchargement

[WD21] La pré-version en téléchargement

Vous pouvez dès à présent télécharger la pré-version de l’AGL Windev, développé par PC SOFT. Il s’agit de la version 21 01F210039d. Si vous possédez déjà vos licences pour exécuter l’environnement, alors vous allez pouvoir découvrir les nombreuses nouveautés présentées au TDF et dans le magazine.

Attention, il ne s’agit pas de la version finale. Certaines fonctionnalités ne sont peut-être pas encore actives et d’autres peuvent tout simplement être instables. Ne migrez donc pas vos applications existantes dans cette version.

Qu’y-a-t-il de nouveau ?

  • Télémétrie : permettez aux applications de collecter et envoyer des données à un serveur pour faciliter le développement. A tout moment vous pourrez savoir quelles sont les fenêtres les plus / moins utilisées, obtenir le détail des erreurs qui se sont produites sur les différents postes, etc.
  • Champ note : si vous utilisiez déjà les notes intégrées à Windows, vous devriez vous habituer à celles de Windev. Rédigez des notes directement depuis les applications. Celles-ci peuvent alors être déplacées et sont également mémorisées et restaurées à chaque lancement du logiciel. Elles sont bien sûr programmables.
  • Amélioration des éditeurs : interface épurée, mémorisation de l’état de l’explorateur de projets, support des hautes résolutions (4K), affichage des raccourcis dans les menus contextuels, recherche avancée en langage (presque) naturel, fenêtre des 7 onglets non modale lors de l’édition d’états, et encore bien d’autres petites nouveautés ici et là.
  • Modification de l’interface utilisateur… par l’utilisateur : cette fonctionnalité permettra aux utilisateurs de modifier la position et la taille des champs à leur guise et ce sans modifier l’agencement initial. Les informations sont mémorisées et l’utilisateur retrouvera sa configuration au prochain lancement de l’application. Et bien sûr, il sera possible à tout moment de revenir à l’interface initialement prévue par le développeur.
  • Modification des fenêtres pendant le débogage : en plein développement et donc en pleine opération “go”, vous pourrez modifier l’agencement de vos champs et répercuter cela dans l’éditeur de fenêtres de Windev.
  • Compression de chaines “gzip”.
  • Nouveaux formats d’archivage TAR et GZ.
  • Accès natif à la base de données Hadoop.
  • Authentification Facebook à partir de vos applications mobile.
  • Nouvelles fonctionnalités pour les développements mobile : effet de parallaxe sur les images lors du défilement, développement pour les terminaux tels que les iWatch ou iPhone 6S, support des protocoles FTP/FTPS, support de 3D Touch pour les périphériques Apple compatibles, support de l’écriture sur les cartes SD à partir d’Android, etc.
  • HFSQL : nouvelles fonctions, notamment pour les dates et les heures, ou la conversion, nouveaux types, récupération de l’utilisateur courant (CURRENT_USER), “explain” visuel dans le centre de contrôle du serveur, etc.
  • Responsive Web Design : si vous utilisez Webdev, la conception de vos sites “responsive” sera plus facile. L’agencement d’une page pourra être défini en fonction d’une ou plusieurs résolutions / plateformes afin de faire bénéficier aux internautes d’une expérience de navigation optimale.
  • Universal Windows 10 Apps : développez des applications dites responsive pour un déploiement sur plusieurs types de périphériques Windows 10 (mobile, desktop, etc). Plus d’informations : “A first look at the Windows 10 Universal app platform“.

Vous vous doutez que cette liste est loin d’être complète. Vous pouvez consulter la brochure disponible sur le site de PC SOFT pour obtenir plus d’informations ou tout simplement télécharger cette nouvelle version.

Bon développement à tous.

[WD20] PC SOFT annonce sa nouvelle version

[WD20] PC SOFT annonce sa nouvelle version

Chaque année, dans le courant du mois d’octobre, PC SOFT annonce la nouvelle version des trois éditeurs WinDev, WebDev, et WinDev Mobile. En résumé, on notera la compatibilité avec Windows 10, le support de la nouvelle version d’Android (“L” ?), iOS 8.0 et des terminaux associés (iPhone 6, iPhone 6 Plus), de nouvelles fonctions du WLangage, des améliorations pour SQL, pour le centre HFSQL, ainsi que pour la programmation Java, les Web Services, et encore bien d’autres.

L’apparition du champ Tableur est sans conteste l’une des grandes surprises de cette nouvelle version. Celui-ci est natif, ce qui signifie qu’il n’est pas nécessaire d’avoir installé Microsoft Excel sur la machine. Il supporte des fonctions de calcul essentielles comme la somme, la soustraction, les conditions “SI”, etc. Il est également capable de lire les feuilles de calcul enregistrées au format XLS ou XLSX. Si une fonction n’est pas reconnue lors de la lecture, #Erreur sera indiqué dans la cellule pour informer l’utilisateur qu’elle n’est pas prise en charge. On se doute que pour l’instant bien des formules risquent de manquer à l’appel, étant donné que c’est quelque chose de tout à fait nouveau…

Le champ Tableau Croisé Dynamique (aussi appelé Cube rOlap) évolue aussi : la nouveauté #017 mentionne l’inversion des dimensions, en utilisant un exemple de ventes de produit par année pour plusieurs pays. Il sera possible d’inverser les niveaux : ainsi au lieu d’avoir d’abord la sélection du pays puis le choix du produit, on pourra faire cela en sens inverse (d’abord avoir le chiffre par produit, puis avoir le détail par pays). En #018 on notera la possibilité d’échanger les critères utilisés en ligne et en colonne. A venir aussi : la multi-sélection, l’affichage des lignes/colonnes totalement vides, remplissage par data-binding, style indépendant de chaque cellule, annulation du calcul, recherche, et amélioration des FAA.

Parmi les améliorations des éditeurs, on notera par exemple la recompilation en arrière-plan pour les projets WD et WD Mobile. Reste à voir son fonctionnement mais cela permettrait de ne pas bloquer l’utilisateur et d’accéder aux objets pendant cette opération. Les utilisateurs seront aussi ravis de savoir qu’on pourra par exemple afficher le code d’une fenêtre sur un second écran avec l’affichage de celle-ci sur l’écran principal. D’après PC SOFT les performances de la fonctionnalité auraient encore été améliorées.

Au niveau du WLangage, la nouveauté #092 surprend quelque peu : il s’agit de la procédure interne. Celle-ci ne peut être appelée que depuis le traitement où elle est définie. Une amélioration qui fait un peu penser au “GOTO [Label]” mais sous une forme plus élégante… et avec des paramètres. Est-ce vraiment une bonne chose ? Ne vaut-il pas mieux passer par une procédure locale à la fenêtre, en la nommant judicieusement ?

La nouvelle façon de passer des paramètres à une fonction (#093 et #094) est surprenant aussi, quoique déroutant. Comme pour une requête, il sera possible de définir les paramètres à l’avance avant d’effectuer l’appel lui-même. Cela permet non seulement de les définir dans un ordre aléatoire, mais d’améliorer la lisibilité. Une fois de plus, c’est une bonne idée mais c’est assez discutable du point de vue de l’ordre des paramètres. Notez également l’apparition de nouvelles fonctions du WLangage (transformation de chaines en heure, nombre d’occurrences d’un sélecteur ou d’un interrupteur, fonctions SSH), les tableaux de tableaux, l’apparition des fonctions de cryptage et décryptage standards DES/3DES/AES, etc.

Nous vous parlions des améliorations au niveau du langage SQL : à partir de la nouveauté #117 on notera le support des vues SQL et matérialisées dans HFSQL, le support de l’INSERT multiple, l’utilisation du SELECT scalaire dans une requête UPDATE ou INSERT, gestion des droits avec les ordres GRANT et REVOKE, paramétrages des clauses TOP, LIMIT ou BOTTOM ({MonParametre}), optimisation de la clause IN, apparition de nouvelles fonctions (exemple : REGEXP pour évaluer une expression régulière au sein d’une condition, CHAR pour obtenir un caractère depuis un code ASCII, etc).

D’autres nouveautés sont intéressantes : l’interaction avec les Web Services REST, les onglets dynamiques, la prise en charge d’iOS 8.0 et de la dernière version d’Android, de nouvelles fonctions Java, nouveau champ carte Google Maps, nouvel éditeur de code HTML, cryptages standards pris en charge pour PHP, génération de RAD “MVC”, champ “Zone de Texte Riche” pour les sites web, etc. Rien concernant la création du système d’aide d’une application, l’utilisation de l’API Exchange Web Services ou la prise en charge de fichiers XML lourds. Mais cette version semble proposer des choses qui devraient plaire, comme toujours. Il y a du bon et si vous souhaitez en savoir plus, vous pouvez toujours consulter la brochure.

[WD19] Bug d’exéc. de requête avec auto-jointure

[WD19] Bug d’exéc. de requête avec auto-jointure

Dans la dernière version de Windev, il est possible que vous rencontriez des problèmes pour exécuter des requêtes de type “auto-jointure”, c’est-à-dire une requête dans laquelle on joint une table à elle-même (Comment ça marche : auto-jointure). A l’exécution, une erreur peut se produire mais Windev n’affiche pas d’exception. Le problème vient en fait de la DLL “wd190sql.dll” qui contient visiblement un bug.

PC SOFT a développé un correctif mais attention, celui-ci n’est pas intégré à la dernière version de l’AGL, à savoir la version 01F190056s. Si vous souhaitez télécharger ce correctif, vous pouvez l’obtenir ici (lien Mediafire, ne faites pas attention aux popups de publicité). Notez que ce correctif ne peut être appliqué qu’à partir de la version 01F190056j.

Une fois sur la page Mediafire, comme le montre l’image ci-dessous, cliquez sur le bouton “Download” : le téléchargement devrait alors commencer (si votre navigateur ne bloque pas les publicités ou les fenêtres intempestives, vous pouvez directement fermer le popup qui apparait à l’écran).

L’archive contient un dossier nommé “framework” qui doit être décompressé tel quel dans le dossier “..\Windev 19\Programmes”. Si Windev est installé en respectant la norme Windows, ce dossier devrait être situé dans “Program Files” puis “PC SOFT”, sinon à la racine, à moins d’avoir spécifié un dossier en particulier lors de l’installation.

La version de la nouvelle DLL est 19.0.61.3 et date de début juin 2014. Vous pouvez remplacer sans problème la version précédente (19.0.60.2).

[WD19] Coloration syntaxique dans Notepad++

[WD19] Coloration syntaxique dans Notepad++

Si vous ne connaissez pas encore Notepad++, il est encore temps de le découvrir ! Il s’agit d’un éditeur de texte et de code sous licence GPL prenant en charge plusieurs langages afin d’offrir une coloration syntaxique. En plus de cela, il permet d’ouvrir plusieurs fichiers sous forme d’onglet, de mémoriser la session actuelle, de créer des macros,… Et si vous êtes sous Windows, vous constaterez qu’il est bien plus performant que le bloc-notes intégré au système. Pour le télécharger, rendez-vous sur le site officiel : notepad-plus-plus.org !

Bien sûr, il n’intègre pas la coloration syntaxique pour le WLangage, donc lorsqu’on copie du code depuis Windev, il est un peu difficile de s’y retrouver. Avec le plugin WLangLexer pour Notepad++, disponible sur le site WDScript.fr, on peut désormais afficher en couleurs les différents éléments du WLangage, comme on peut le constater avec l’image suivante.

Le 31 janvier 2014, l’auteur proposait une mise à jour pour prendre en charge les nouveautés de Windev 19 [snip: lien mort]. L’archive est à décompresser dans le sous-répertoire “plugins” du dossier d’installation de Notepad++. Ensuite, il suffit simplement de relancer le logiciel et d’aller dans le menu “Langage” pour découvrir l’option “WLang”. Lorsqu’on copie du code, on obtient le même genre de résultat que sur l’image ci-dessus. Nous ne pouvons que féliciter le créateur de ce plugin, qui rendra bien des services à ceux qui aiment s’échanger du code sous forme de fichiers texte !

Edition du 04/01/2019Lors de mon édition du 27/11/2014, j’avais souligné l’indisponibilité de l’URL originale du plugin, sans doute due à la suppression du site par son auteur, Tanguy Pruvot. Le lien que j’avais ajouté en remplacement est également mort, mais vous pouvez toujours télécharger le plugin sur mon cloud Mediafire.

[WD19] Découverte des quelques nouveautés (II)

[WD19] Découverte des quelques nouveautés (II)

Parmi les nouveautés de l’interface, nous avons déjà mentionné la présence d’onglets contextuels accompagnés des onglets par défaut, tous groupés dans un bandeau comme dans Microsoft Office ou même Windows Live Writer. PC SOFT a aussi profité de cette mise à jour pour ajouter de nouveaux assistants et moderniser ceux actuellement présents.Malgré tous ces efforts pour nous fournir une version au design retravaillé, nous avons tout de même rencontré quelques problèmes, notamment lors de la création d’installateurs. Et même s’il y a des choix qui peuvent paraitre étranges (nous y reviendrons), il y a pourtant dans cette nouvelle version des choses qui plaisent.

Recherche dans le code, l’aide,…

Comme nous venons de le dire, WinDev propose de nouveaux outils pour trouver des éléments bien cachés dans vos projets. Les utilisateurs de WD18 connaissent sans doute bien le module de recherche qui avait été complètement revu dans cette version. Et vous vous en doutez, des améliorations ont encore été apportées.

Lorsque vous effectuez une recherche textuelle, vous pouvez utiliser des caractères d’exclusion ou des jokers. Pour exclure un mot de la recherche, précédez-le d’un caractère “moins” (-). Les jokers “?” et “*” permettent de remplacer un seul ou une série de caractères.

Parmi toutes les options proposées, vous pouvez demander à ce que la recherche soit effectuée dans une configuration en particulier (sinon dans toutes), mais aussi uniquement dans le code ou bien même dans l’IHM. Il est donc possible de rechercher des champs appartenant à une fenêtre bien précise. Pour affiner les résultats, il y a également moyen d’ignorer la casse (pas de distinction entre les majuscules et minuscules), ignorer la ponctuation et les espaces, et de spécifier la méthode de recherche (contient, commence par, mot complet, ou termine par).

L’option “Filtrer les résultats” permet de modifier l’affichage actuel : on peut y faire disparaitre les commentaires, les liaisons dans l’IHM, les chaines multilingues, etc. Effectuez une nouvelle recherche pour prendre en compte les options d’affichage cochées ou décochées.

Le module ne propose pas que la recherche dans le code : en effet, vous pouvez chercher après une expression régulière, ou même… un sujet dans l’aide de WinDev. Dans l’image ci-dessous, nous avons demandé des informations à propos des fonctionnalités FTP.

Enfin, sachez que vous pouvez réaliser plusieurs recherches en verrouillant les volets (cliquez sur le cadenas en haut à droite). Cela permet d’en créer plusieurs afin de conserver les résultats à l’écran.

Recherche dans les onglets

Nous en avions déjà parlé dans l’article précédent. En effet, pour vous aider à vous familiariser aux onglets type “Office”, PC SOFT a pensé à intégrer un outil de recherche pour trouver plus facilement une option. Cliquez tout simplement sur la petite loupe en haut à droite de la fenêtre principale, et saisissez le nom d’un élément ou le début d’une commande. Au fur et à mesure, les résultats s’affichent et il vous suffit de cliquer sur l’un d’entre eux afin de localiser l’option en question.

Nouveautés en vrac (code)

Dans WinDev, il y a bien sûr des améliorations concernant le code. Certaines sont les bienvenues, d’autres peuvent laisser penser à une régression dans la manière de programmer.

Classes abstraites

Au fil des versions, WinDev gère de mieux en mieux la POO. Pas parfaitement bien sûr, mais sachez qu’il est désormais possible de créer de vraies classes abstraites sans pour autant les “simuler”. Un pas de plus effectué vers l’orienté objet.

Complétion

Lorsque des erreurs de compilation survenaient, il était impossible d’utiliser l’assistance à la saisie. C’est désormais réglé ! Même si une ligne apparait en erreur, vous pouvez toujours utiliser le fameux popup.

Création de champs par programmation

Il est désormais possible de créer des champs par programmation, et le positionner dans une fenêtre. Tout ça grâce au nouveau type “Champ” du WLangage. Cela permet d’éviter les indirections et cela permet de créer des fenêtres plus “dynamiques”.

Labels automatiques

Sans doute la plus grande “régression” qui puisse exister puisque cela rappelle en effet l’utilisation du GOTO. Tous les développeurs vous le diront : faites toujours en sorte de sortir proprement de vos boucles !

Mais ils avaient dit 919 nouveautés!

Comme vous vous en doutez, nous n’allons pas tout présenter dans ces articles. Cela prendrait trop de temps ! Et le but recherché n’est pas de recréer une brochure pour PC SOFT. Nous souhaitons mettre en avant ce qui plait et ce qui peut éventuellement fâcher et laisser de côté toutes les petites améliorations “mineures”.

[WD19] Découverte des quelques nouveautés (I)

[WD19] Découverte des quelques nouveautés (I)

Choses promises, choses dues. J’avais en effet mentionné l’écriture d’un article à propos de la nouvelle version de WinDev, à savoir la 19ème du nom. Comme chaque année, PC SOFT propose son lot de nouveautés, plus ou moins importantes, et ce pour chacun des éditeurs (cela concerne donc également WebDev et WinDev Mobile). La première chose que l’on remarque, c’est l’apparence épurée. Globalement, cela fait moins gadget et cela se voit dès l’écran de connexion.

Nous avons choisi ici un projet au hasard afin de le convertir. Lors de l’ouverture, WinDev vous demande si vous souhaitez sauvegarder votre projet avant de le passer en version 19. C’était déjà le cas avant et cela fonctionne en généralement bien (il est possible d’obtenir l’une ou l’autre erreur pendant la conversion).

En passant de la version 17 à la 19, vous risquez de perdre vos repères de manière assez brutale, un peu comme ceux qui sont directement passés à la version précédente (18). En effet, le design en “bandeau” – comme dans Microsoft Office – peut assez bien dérouter au début. C’est comme pour tout : il faut un temps d’adaptation.

Bien sûr, il est possible d’afficher la barre des menus et l’ancienne barre d’outils (“mode compatible”) grâce aux deux icônes situées en haut à gauche du bandeau, juste à côté du logo de WinDev. Pour ceux qui sont réfractaires au changement, cela devrait leur plaire ! Pour ceux qui sont adeptes de cette interface mais qui ne trouvent pas leurs repères, il est possible d’effectuer une recherche de commande, en cliquant sur la loupe à droite, à côté des boutons de redimensionnement de la fenêtre.

Cela permet en fait de localiser la commande dans la bonne catégorie ; lorsque vous sélectionnez un résultat de recherche, l’onglet est ouvert et l’option est mise en surbrillance. Ainsi au fur et à mesure, cela vous aidera également à mémoriser l’emplacement de chacune de ces fonctions. Un moyen judicieux pour exploiter au mieux cette nouvelle “barre d’outils”.

Mais ce qu’on note surtout en ouvrant un projet (ou en créant un nouveau), c’est la nouvelle apparence du tableau de bord. Beaucoup devraient apprécier cette finition qui fait clairement moins gadget qu’auparavant. C’est maintenant des widgets que l’on voit apparaitre. Et la différence est plus que frappante. L’image ci-dessous parle d’elle-même.

Par curiosité nous avons souhaité ajouter ce fameux champ dans une fenêtre. Et forcément, ils lui ont donné le nom de… “Tableau de bord”. En vous positionnant dans l’éditeur de fenêtres, choisissez l’onglet contextuel de “Création”, choisissez le champ et effectuez un glisser-déposer comme au bon vieux temps !

Le champ va vous permettre d’afficher plusieurs fenêtres internes dans un même champ, tout en choisissant la position et la taille initiale. Libre à l’utilisateur de les redimensionner ou de les déplacer lorsqu’il utilisera l’application finale. L’avantage est que cela va permettre de créer des logiciels dont le but est d’être proactifs. Ils pourront mettre en garde sur différents points en indiquant s’il y a un problème, ou ils pourront simplement afficher des données statistiques précises.

Vous l’avez également remarqué : le bandeau s’adapte automatiquement en fonction de l’éditeur actif (on dit des onglets qu’ils sont “contextuels”). Si vous vous trouvez actuellement dans une fenêtre, vous voyez apparaitre les onglets suivants : “Création”, “Modification”, “Alignement”, “Fenêtre” et “Affichage”. Si vous basculez par exemple dans l’éditeur de système d’aide, la plupart des onglets vole à la trappe. On remarque le même comportement dans Microsoft Office.

Voilà donc quelques nouveautés prises au hasard pour ce premier article de découverte. L’objectif n’est pas de vendre le produit mais de faire un tour du propriétaire sans pour autant s’arrêter sur l’ensemble des détails. D’une part cela permet de ne pas endormir le lecteur avec un roman, et d’autre part c’est un moyen de mettre en évidence les changements majeurs qui ont été apportés depuis une précédente version, même si elles ne se suivent pas forcément.