Recherche sur le blog

jeudi 28 mars 2013

[Dossier] Vous et internet, conseils de base

C’est indéniable : à l’heure actuelle, nous avons recours à internet et à ses outils pour de nombreuses tâches : envoyer des e-mails, personnels comme professionnels, rédiger des articles sur des blogs afin de partager ses connaissances, ses loisirs quelconques (sport, automobile, etc) ou pour informer de l’actualité dans le monde entier. La toile regorge également d’un nombre élevé d’informations, encore faut-il qu’elles soient sures. Il faut également s’assurer que la source est fiable, qu’elle ne risque pas d'amener à télécharger des données nuisibles (exemple : virus, malwares) ou à saisir des informations qui seront utilisées contre vous ou revendues (exemple : phishing).

appstore

Sur le web, on trouve aussi des applications à installer, sur nos ordinateurs comme sur nos autres appareils (smartphones, tablettes). Sur nos systèmes actuels, nous pouvons télécharger depuis n’importe quelle source : depuis des “magasins” (ou “app stores”) intégrés au système, qui permettent de s’assurer que les applications sont sans danger, mais aussi depuis des sites spécialisés ou non, ou depuis la page officielle de l’éditeur.

Le but recherché dans ce billet est de vous inciter à mettre en place des solutions simples (modification de vos mots de passe, installation d’un navigateur alternatif, utilisation d’un antivirus payant ou gratuit,…) afin de vous protéger un minimum lorsque vous surfez, consultez vos mails, téléchargez des applications, rédigez sur des forums, regardez des vidéos et bien d’autres.

Les navigateurs

Bien que nous ayons des penchants pour l’un ou l’autre navigateur, c’est à vous de décider lequel vous convient le mieux. Pour cela, rien ne vous empêche d’en installer deux côte-à-côte, puisque vous ne risquez aucun conflit! Les deux préférés qui ressortent du lot sont Mozilla Firefox et Google Chrome. Les utilisateurs de Linux pourront eux aussi bénéficier d’une version de l’un d’eux. Citons aussi Safari, qu’on retrouve de base sur Mac OS X. Depuis sa version 8, et disponible en version 10 sur Windows 7/8, Internet Explorer est lui aussi devenu bien plus sûr et bien moins lourd qu’auparavant. Il conviendra à beaucoup d’entre vous, même si nous préférons le navigateur fourni par Google. A vous de décider !

  

L’antivirus

Sous Linux, bien que l’utilisation d’un antivirus soit controversée, au point que l’on conseille de ne pas s’en servir, sachez que certains éditeurs proposent des versions (gratuites ou payantes). Cependant, attirons tout de même l’attention des utilisateurs Windows pour lesquels il sera nécessaire d’en posséder un.

Quel type d’antivirus faut-il choisir ? Cela dépend de vos besoins et de la sécurité exigée. Tout d’abord, gardez bien à l’esprit qu’aucun antivirus n’est infaillible ! Certains programmes malicieux pourront toujours se faufiler sans que l’utilisateur n’en soit averti.

Si vous attendez d’un antivirus qu’il protège le maximum d’éléments sur votre machine, il faut se diriger vers des versions payantes (Kaspersky, Bit Defender) : en effet, elles disposent de plus de fonctionnalités, telles que la protection de la messagerie instantanée (Skype, WLM), un filtre anti-spam, le filtrage d’URL, l’analyse du contenu des pages web, l’affichage de notifications détaillées, un mode “jeu”, – qui désactive les services gourmands pendant que l’utilisateur joue –, etc. De plus, elles utilisent des systèmes de notifications et de confirmation qui attirent l’attention de l’utilisateur.

Si vous avez de bonnes habitudes et que vous prenez le temps de vérifier vos sources, que vous avez appris à vous méfier de certains fichiers en analysant simplement leurs caractéristiques (exemple : “je télécharge une musique et son extension est .exe”, “je télécharge une archive .zip et elle me semble d’une taille incohérente”, etc), dirigez-vous plutôt vers une version gratuite (Avira Antivir, Avast!) qui propose, en général, uniquement les outils de base, à savoir la protection en temps réel et le scan sur demande. Ils sont donc moins “intrusifs” et demandent peu d’interaction de votre part.

Quelques conseils de navigation

A l’heure actuelle, nous ne nous limitons plus seulement à l’envoi d’emails. Désormais, nous pouvons sauvegarder nos photos et documents dans le cloud (espace de stockage sur un serveur distant), nous écrivons des articles sur nos blogs ou sur des sites personnels que nous avons créés de nos propres mains, nous effectuons des paiements pour acheter des vêtements ou des outils sur des magasins en ligne (e-commerce). Tous ces services requièrent que vous saisissiez un mot de passe et même parfois des informations comme vos coordonnées bancaires (au moment de valider un achat par exemple).

Complexité du mot de passe

Le mot de passe est la combinaison qui protège votre compte. C’est une sorte de clé, un cadenas, qui vous permettra d’être l’unique personne ayant accès au compte. Nous vous déconseillons fortement d’utiliser des mots provenant du dictionnaire sans les accompagner d’autres chiffres, lettres ou caractères. Evitez les prénoms ou les noms de vos proches ; il est désormais très facile de les deviner, grâce aux réseaux sociaux notamment.

cadenas

Combinez autant que possible majuscules, minuscules, chiffres, caractères spéciaux (tels que $, ^, !, ù, µ, +, –…), et mélangez-les suffisamment. Plus le mot de passe est complexe, plus il sera difficile de le trouver avec les méthodes les plus classiques.

Un mot de passe différent

A chaque site que vous visitez, n’hésitez pas à modifier votre mot de passe habituel pour en faire une variante. Ainsi, si l’une de vos combinaisons a été découverte, il y a des chances pour que vos autres comptes ne soient pas la cible de l’attaque. Dans ce cas, la difficulté réside dans le fait qu’il faut pouvoir tous les retenir, sinon vous allez passer du temps à cliquer partout pour les récupérer par mail…

La question secrète : un attrape-nigaud

Beaucoup sont tentés d’y répondre avec franchise, mais c’est un piège qui pourra vous couter cher, sachant que la combinaison de la question-réponse pourra souvent servir à restaurer le mot de passe afin de le redéfinir. Du coup, si vous choisissez “Quel est le nom de jeune fille de votre mère” et que vous répondez honnêtement, vous risquez qu’un individu choisisse ce mode d’attaque pour s’accaparer votre compte. Ainsi, privilégiez des réponses farfelues composées elles-aussi de caractères étranges, de chiffres, et de lettres, le tout passé au mixeur. Attention, la question secrète peut quand même servir pour modifier votre mot de passe depuis votre compte toujours actif ou même demander un support en ligne. C’est le cas de EA avec son logiciel Origin. Dans ce cas, il vous faudra noter la question et la réponse sur un papier bien caché.

Vos paiements… Sur sites sécurisés

C’est quasiment une norme à respecter par les gestionnaires de sites d’e-commerce si vous devez effectuer des achats sur internet : la navigation “sécurisée” doit être activée. Ainsi, des protocoles de protection tels que SSL ou TLS doivent être mis en place pour que vos transactions ne puissent pas passer en clair, et donc être éventuellement interceptées. En tant qu’internaute, vous ne connaissez probablement pas ces techniques de sécurité, mais vous pouvez à tout moment savoir s’il y a un mécanisme en place. En effet, dans votre navigateur, vous devriez voir apparaitre un cadenas à côté de l’adresse (ou même le préfixe “https://” dans l’URL au lieu de “http://”).

TLS

Le fait de cliquer sur le cadenas permet d’obtenir davantage d’informations comme les autorisations effectives – modifiables notamment si vous utilisez Google Chrome –, la validité du certificat et l’organisme ayant vérifié l’identité du site, ainsi que le type de chiffrement utilisé et le protocole adopté – même si cela ne vous parle probablement pas.

Et sur les ordinateurs publics ?

Méfiance lorsque vous vous trouvez dans un cybercafé, dans votre entreprise ou dans une école. Evitez d’utiliser les fonctionnalités d’enregistrement des mots de passe, intégrées aux navigateurs, ou proposées par les pages que vous visitez. Celui qui utilisera la machine après vous sera tenté de faire le curieux…

Le phénomène du “phishing”

Nous en avions déjà parlé dans un précédent article : la technique consiste à usurper l’identité de quelqu’un d’autre afin de s’approprier des informations confidentielles comme des mots de passe, des codes PIN, ou bien des numéros de comptes / cartes bancaires, et ce par l’intermédiaire d’e-mails et surtout de pages internet non officielles.

Blocage de pubs par des extensions

Des modules comme AdBlock Plus peuvent être ajoutés à votre navigateur et permettent de bloquer la publicité, parfois trop présente. C’est bien et mal à la fois. Bien parce que vous évitez d’afficher une multitude de bannières pendant votre navigation. Mal parce que ce sont souvent des sources de revenus pour le propriétaire. Tout ce que nous pouvons dire, c’est que le choix vous revient.

De l’importance des mises à jour

Vos logiciels doivent régulièrement être mis à jour, surtout ceux qui sont régulièrement utilisés sous forme de plugins ou extensions dans les navigateurs. Nous citerons par exemple Adobe Acrobat Reader, Java (attention, ce coquin essaie d’installer une barre d’outils Ask pendant son installation – il faut refuser celle-ci !), Adobe Flash Player, .NET Framework, etc. Ces logiciels, comme beaucoup d’autres, comportent des failles de sécurité qui sont découvertes au fur et à mesure, et qui sont régulièrement comblées. Si vous n’effectuez pas les mises à jour, ces brèches pourront être exploitées par des personnes mal intentionnées, ce qui pourrait avoir des conséquences néfastes.

javabien

Les petits plus…

Quelques conseils supplémentaires… Liste non exhaustive, “of course” :

  • Attention aux téléchargements de “torrents” : leur contenu n’est parfois pas celui auquel on s’attend. Vérifiez toujours la source depuis laquelle vous obtenez ces fichiers.
  • Evitez au maximum les sites pornographiques, ainsi que les sites de téléchargement illégal (cracks de logiciel par exemple), qui peuvent nuire à votre ordinateur en vous faisant parfois installer des outils indésirables.
  • Méfiance : de faux antivirus courent sur le net. Ils sont intrusifs, vous rappellent sans cesse d’effectuer le paiement pour une version complète, et répètent toutes les 5 minutes que votre ordinateur est complètement infecté. En voici une liste, provenant de Clubic : Security Tool, Antivirus 7, CleanUp Antivirus, Security Toolbar, Digital Protection, XP Smart Security 2010, Antivirus Suite, Vista Security Tool 2010, Total XP Security, Security Central, Security Antivirus, Total PC Defender 2010, Vista Antivirus Pro 2010, Your PC Protector, Vista Internet Security 2010, XP Guardian, Vista Guardian 2010, Antivirus Soft, XP Internet Security 2010, Antivir 2010, Live PC Care, Malware Defense, Internet Security 2010, Desktop Defender 2010, Antivirus Live, Personal Security, Cyber Security, Alpha Antivirus, Windows Enterprise Suite, Security Center, Control Center, Braviax, Windows Police Pro, Antivirus Pro 2010, PC Antispyware 2010, FraudTool.MalwareProtector.d, Winshield2009.com, Green AV, Windows Protection Suite, Total Security 2009, Windows System Suite, Antivirus BEST, System Security, Personal Antivirus, System Security 2009, Malware Doctor, Antivirus System Pro, WinPC Defender, Anti-Virus-1, Spyware Guard 2008, System Guard 2009, Antivirus 2009, Antivirus 2010, Antivirus Pro 2009, Antivirus 360, MS Antispyware 2009, IGuardPC, I Guard PC, Additional Guard.
  • N’hésitez pas à “scanner” vos disques avec des utilitaires comme Malwarebytes Anti-Malware. Pour ceux qui ont déjà de l’expérience dans le domaine, nous vous invitons à utiliser des logiciels “avancés” comme ComboFix, SmitFraud Fix et AdwCleaner.
  • Installez un pare-feu ou configurez celui intégré à votre modem (si applicable). Si vous ne savez pas comment faire, de nombreux forums traitant d’informatique pourront vous venir en aide assez rapidement (Clubic, Les Numériques, Zébulon, Comment ça marche, etc). S’il s’agit d’un modem obtenu auprès de votre fournisseur d’accès, vous pouvez éventuellement prendre contact avec le helpdesk, qui saura vous aiguiller.
  • Oubliez au maximum les barres d’outils qui s’entassent dans votre navigateur et qui vous font perdre de l’espace à l’écran mais aussi qui ralentissent le programme. Sont à proscrire : Ask, Babylon, µTorrent Toolbar, QuickStores, etc.
  • Réglez vos paramètres de confidentialité sur les réseaux sociaux pour empêcher que l’entièreté de votre vie privée ne soit dévoilée au monde entier. Nous avons déjà proposé des articles à ce sujet pour vous aider à réaliser cette tâche. Malheureusement, l’évolution de ces sites est très rapide, et donc beaucoup d’éléments se retrouvent à d’autres emplacements… Pas facile de s’y retrouver.

   

Et après ?

Il n’y a pas grand chose à ajouter, à part : “mettez un maximum de conseils en application”. Vous ne profiterez du web que si vous pouvez le faire en toute quiétude. Enfin, c’est beaucoup dire, car il faut sans cesse faire attention aux petits pièges parfois tendus à notre insu. Parfois, par mégarde, on se retrouver à cliquer sur “Oui” au lieu de “Non”. Il faut donc également savoir prendre le temps, réfléchir, afin d’éviter de commettre une bourde.

jeudi 14 mars 2013

[WD17] Le délai d’attente de la requête a expiré

Lorsque vous tentez d’exécuter une requête sur un serveur distant SQL Server, vous pouvez obtenir l’erreur suivante : “Erreur 80040e31, le délai d’attente de la requête a expiré”. En fait, le serveur n’a pas répondu assez vite à la commande envoyée. En effet, il faut bien distinguer le temps d’exécution maximum d’une requête distante (qu’on définit dans les paramètres de SQL Server) et le temps accordé avant qu’une commande envoyée n’expire. C’est pour cela qu’on ne doit pas modifier directement de paramètre sur le serveur mais bien dans la chaine de connexion à la base de données.

Avec HDécritConnexion, vous pouvez définir des informations étendues. Vous pouvez également faire de même en éditant la propriété “InfosEtendues” de la variable de type “Connexion”. La documentation vous indique quelles sont les informations optionnelles utilisables dans la chaine de connexion. Celle qui attire notre attention ici est “WD Command Timeout”, qui permet de fixer la durée maximale de l’exécution d’une commande.

Les valeurs possibles sont :

  • -1 : valeur par défaut définie par la couche client (dans WinDev, il s’agit de 30 secondes – cela s’applique aussi à HyperFileSQL C/S).
  • 0 : illimité. Faites bien attention car des blocages peuvent survenir.
  • > 0 : temps en secondes (dans notre exemple, nous avons indiqué 600 secondes, soit 10 minutes).

wdcommandtimeout

En .NET (par exemple en VB ou en C#), il est également possible de définir ce timeout en le précisant dans une propriété (CommandTimeout) de la variable SqlCommand.  L’exemple ci-dessous permet d’augmenter le temps jusqu’à 90 secondes avant l’expiration.

vbnet

Enfin, en Java, il suffit d’appeler la fonction “setQueryTimeOut” de l’objet “Statement” qu’on aura au préalable initialisé. Dans l’exemple, on laisse un délai de 60 secondes pour envoyer la commande, avant qu’elle n’expire. Il faut impérativement utiliser cette fonction avant d’exécuter la requête.

stmt

Nous pouvons évidemment continuer à citer les différentes analogies entre les nombreux langages de programmation qui existent, mais cela risquerait de prendre beaucoup trop de temps. Ainsi, voici un billet qui pourra servir de mémo dans le futur, au cas où cela vous échapperait à nouveau.

jeudi 7 mars 2013

[WD17] xlsOuvre et consommation de RAM

Quelle catastrophe ! Nous souhaitons utiliser pour la première fois la fonction xlsOuvre avec un fichier qui contient énormément de données. En soi, le fichier est assez léger : il s’agit d’un document “.xlsx” de 14.022 Ko. Celui-ci contient 7 colonnes, et 82.348 lignes. Plusieurs fonctions sont utilisées (arrondi, somme, etc…)

En tentant notre chance une première fois pour ouvrir le fichier Excel en stockant le résultat dans une variable xlsDocument, cela a carrément planté le programme : il est arrivé à 1,8 Go de mémoire RAM consommés, après 3 à 5 secondes, et a mis à genoux le programme. Ce dernier était littéralement bloqué, et occupait également 25 % de l’UC.

La seconde fois, nous avons stocké le résultat dans un entier, comme le permet la fonction. En effet, on récupère dans ce cas un handle qu’on peut manipuler avec le reste des fonctions xls*. Le résultat est (presque) identique mais a toutefois permis d’ouvrir le fichier. La mémoire a grimpé jusqu’à 1,1 Go après 3 à 5 secondes, et le fichier s’est ensuite chargé très (très) lentement, pour arriver à une consommation de 1,5 Go. Nous avons ensuite pu récupérer les premières données. On peut donc constater que dans ce cas, la mémoire requise est légèrement inférieure. Malheureusement, cela reste de trop… Obligation de découper le fichier en plusieurs parties plus petites.

Le test a été effectué sur une machine Intel Core i3 370M, 3 Go de mémoire DDR2, Windows 7 x86 SP1. La mémoire n’a pas été libérée après cette opération. Il faut idéalement attendre l’exécution de xlsFerme pour cela.

A première vue, ce bug avait déjà été remonté pour les versions précédentes de WinDev, puisque des utilisateurs avaient également abordé ce souci. Espérons que PC SOFT prenne enfin ces remarques en considération afin d’améliorer les performances, actuellement désastreuses, de cette fonction. Pour vous dépanner, nous vous recommandons de convertir votre document au format CSV puis d’utiliser les fonctions de gestion des fichiers (fOuvre, fFerme, fLit, etc).

mercredi 6 mars 2013

[Système] Installer Chrome via l’Active Directory

En suivant un tutorial sur internet, nous avons réussi à déployer Google Chrome sur chaque ordinateur installé ayant rejoint le domaine. Les stratégies de groupe permettent de définir des restrictions d’utilisation de Windows et peuvent être appliquées sur des ordinateurs soit sur des comptes utilisateur. Dans une entreprise, il peut être utile de déterminer des droits d’accès à certaines parties du système : on pourra refuser les changements dans le panneau de configuration, mais aussi empêcher qu’un utilisateur ne change sa page de démarrage internet ou qu’il utilise l’option “fermer la session” dans son menu démarrer. Mieux encore : il est possible d’installer des packages automatiquement sur les machines des utilisateur pour par exemple déployer un navigateur différent.

Tout d’abord, il vous faudra télécharger les éléments suivants : le package MSI pour l’installation (lien 1 Package MSI Google Chrome | lien 2 Package MSI Google Chrome) et l’archive contenant tous les modèles d’administration (fichiers ADM pour Windows Server 2003 et ADMX pour Windows Server 2008) (lien 1 Templates | lien 2 Templates). Un modèle contient notamment la description des modifications à apporter, les valeurs par défaut des paramètres ainsi que la version de Windows prise en charge par ceux-ci. Ouvrez un fichier “.adm” – pour Windows 2003 – ou “.admx” – pour Windows Server 2008 – : ce sont de simples fichiers textes au format XML.

XML

Placez les éléments téléchargés sur votre serveur, à un endroit bien précis. Le fichier MSI devra être de nouveau déplacé par la suite, vous comprendrez pourquoi dans la suite.

adm0

L’installation

Rendez-vous à nouveau sur votre serveur pour commencer la configuration. Dans notre exemple, nous avons utilisé un serveur virtuel dont le système d’exploitation est Windows Server 2008 R2, bien mis à jour. La version de Google Chrome téléchargée est la dernière en date à l’heure où nous écrivons ce billet. Direction les outils d’administration pour lancer la console de gestion des stratégies de groupe.

adm1

Déroulez l’arborescence jusqu’à trouver “Objets de stratégie de groupe”. On y retrouve les stratégies actives, dont celles par défaut. Dans notre cas, “Default Domain Policy” est le parent de toutes les autres. Nous souhaitons que Chrome soit installé sur toutes les machines, sans exception, donc nous allons directement éditer cette stratégie sans en créer de nouvelle. Cliquez sur celle-ci pour obtenir les détails comme l’étendue, le rapport global, ainsi que d’autres informations.  Un clic droit dans l’arbre vous permettra de la “Modifier”, comme sur l’exemple ci-dessous.

adm2

Une nouvelle fenêtre s’ouvre et va vous permettre de définir quel sera le package à installer sur les machines. En déroulant l’arborescence, cherchez après “Installation de logiciels”. Effectuez un clic droit dans l’espace blanc à droite, puis choisissez de créer un nouveau package. Sélectionnez le fichier MSI sur le réseau – que vous aurez donc déplacé à un autre endroit – et faites en sorte que le chemin soit de type UNC, accessible aux utilisateurs. Choisissez le type “attribué” s’il est demandé. Vous pouvez aussi vérifier les paramètres de sécurité en vous rendant dans les “propriétés”, une fois ajouté.

Ensuite, allez dans les modèles d’administration, où vous pourrez importer le fichier “.adml”, comme sur l’image. Choisissez ensuite l’option “Ajouter”. Sélectionnez simplement le fichier “.adml” là où vous l’avez enregistré / copié, ensuite confirmez par “OK”. Le modèle apparait dans “Google”, puis “Google Chrome”.

adm5

Configurez les paramètres comme bon vous semble. Fermez ensuite la fenêtre pour revenir à la gestion de stratégie de groupe. Positionnez-vous dans l’onglet “Rapports”, cliquez droit dans celui-ci et choisissez “actualiser”. Les paramètres pris en compte s’affichent en détail.

adm8

Il est ensuite conseillé de lancer la commande “gpupdate /force” sur le serveur, puis de même sur les machines. Pour les clients, vous serez invité à redémarrer afin que l’installation puisse être effectuée à la prochaine ouverture de session.

Sources

Labo-Microsoft
TechRepublic

mardi 5 mars 2013

[Actualités] Foire du Livre de Bruxelles

Et non, ceci n’a pas de rapport avec l’informatique, bien qu’il existe un paquet incroyable de bouquins traitant de différents sujets dans ce domaine. Ce billet a pour but d’annoncer la foire du livre, puisque l’entreprise où je suis actuellement, tient son stand là-bas. Oui, vous retrouverez Dilibel toujours au même endroit, dans l’immense bâtiment de Tour et Taxis. Il s’agit là de la 43ème édition, qui cherche sans cesse à rassembler tous les férus de littérature, quel que soit leur âge, pour partager des choses magnifiques et pour s’enrichir.

FLB

La Foire du Livre de Bruxelles aura lieu du 7 au 11 mars. Un rendez-vous à ne manquer sous aucun prétexte. Retrouvez plus d’informations sur le site officiel.

[Hardware] Seagate arrête les HDD 2,5” à 7200rpm

C’est décidé : Seagate, l’un des géants du stockage, a précisé vouloir arrêter la production de disques durs classiques de 2,5” à 7200 rotations par minute (rpm), pour se concentrer davantage sur des solutions hybrides : des disques SSHD (Solid State Hybrid Drive). Deux modèles Momentus XT seront destinés aux ordinateurs portables, avec des tailles de 500 Go et 1 To ainsi que 8 Go de mémoire.  Sur le Momentus XT 2ème édition, le disque tournera cependant à 5400 tours… Sur la version desktop, on retrouvera 8 Go de NAND Flash, et on bénéficiera d’une capacité allant de 1 à 2 To. Cette version quant à elle, fonctionnera à  7200 rpm. C’est déjà mieux !

momentus

Aujourd’hui, les SSD deviennent plus abordables et ont tendance à être privilégiés, puisqu’ils annoncent des performances encore au-dessus des solutions hybrides. Des marques comme Samsung, Crucial, Intel ou Corsair, possèdent déjà une large gamme qui devrait facilement vous convenir.

Sources

LesNumériques
Clubic

[WD17] Lister les champs d’une fenêtre, d’un onglet

Dans votre code, il vous sera possible de lister, ou plutôt d’énumérer, des champs d’une fenêtre, d’une page (pour Webdev) ou bien d’une fenêtre. Cette astuce peut se révéler utile lorsque vous devez par exemple augmenter la police des libellés ou pour modifier une ou plusieurs propriétés en une seule fonction. Deux exemples vont être détaillés : le premier permet d’augmenter les caractères de tous les champs de la fenêtre s’ils commencent par “LIB_Libelle”. Le second quant à lui énumère les champs contenus dans un onglet, de deux manières différentes.

Premier exemple : énumérer les champs de la fenêtre

Le code a été écrit dans une procédure, qui ne renverra rien.

EnumereCham)p

On déclare deux variables, la première servira d’indice pour indiquer quel champ on veut récupérer, la seconde – une chaine de caractères – permettra d’enregistrer le nom du champ récupéré. On appelle donc une première fois la fonction EnumèreChamp() qui reçoit deux paramètres en entrée : le nom interne de la fenêtre, et l’indice du champ que l’on souhaite récupérer. On effectue ensuite une boucle qui s’arrêtera dès que la fonction renverra une chaine vide. Les indirections permettent d’affecter des propriétés à chaque champ alors qu’on réutilise la même variable chaine.

Petit rappel : “les opérateurs { et } permettent d'accéder à un champ, une variable, un membre d'une classe ou une rubrique de fichier en construisant dynamiquement le nom du champ, de la variable, du membre de la classe ou de la rubrique.” Voir les “opérateurs d’indirections”.

Deuxième exemple : énumérer les champs d’un onglet

Deux syntaxes vous sont proposées : la première, très simple, profite de l’existence de la propriété “Occurrence” sur le champ de type Onglet, qui permet de connaitre directement le nombre de volets qu’il comporte. La seconde en revanche, utilise plusieurs fois la fonction EnumèreSousElement() dans deux boucles “While”. Pour aller plus loin, vous pouvez même tester les performances des deux techniques pour voir l’écart qui existe. Il devrait être relativement minime.

EnumereSousElement

On déclare une seule variable, “sChpOng” qui contiendra le nom du champ présent dans l’onglet. On crée une boucle allant de 1 au nombre de volets existants (propriété Occurrence). Notez qu’on utilise l’indirection avec le paramètre en entrée “InMonChamp” qui contient : <Nom de la fenêtre>.<Nom du champ>. Ensuite, pour chaque volet, on va utiliser la fonction EnumèreSousElément() qui reçoit deux paramètres en entrée : le nom du champ complet ainsi que l’indice du volet dans le format suivant : <Nom de la fenêtre>.<Nom du champ>.<Indice volet>.  On effectue ensuite le même genre de boucle que tout à l’heure, mais un seul paramètre sera passé à la fonction par la suite.

EnumereSousElement_v2

Cette syntaxe supplémentaire va plus loin dans l’utilisation de la fonction “EnumèreSousElément” puisqu’au départ, on souhaite énumérer les volets contenus dans l’onglet. La constante “enumPremier” indique qu’on initialise l’énumération, tandis que “enumVolet” indique que l’on veut récupérer l’indice des volets. Dans la première boucle, vers la fin, on n’indique plus qu’une seule des deux constantes (voir ci-dessus). La seconde boucle quant à elle, est identique à celle présentée dans la syntaxe la plus simple (“sResChamp” contient alors ici un nombre et pas un nom de champ).