<?xml version="1.0" encoding="iso-8859-1"?>
<rss version="2.0"><channel><title>www.atoutfox.org</title><link>http://www.atoutfox.org</link><description>Communauté Francophone des Professionnels FoxPro</description><language>fr-fr</language><copyright>Copyright 2005 AtoutFox, Auteurs des contributions sur www.atoutfox.org</copyright><managingEditor>bureau@atoutfox.org</managingEditor><webMaster>faure@atoutfox.org Francis FAURE)</webMaster><pubDate>Sat, 04 Jul 2009 01:56:37 GMT</pubDate><lastBuildDate>Sat, 04 Jul 2009 01:56:37 GMT</lastBuildDate><category>Contributions</category><generator>AtoutFox VFP RSS v1.0</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>ms chart</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000704</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000704</guid><description>Vous trouverez ci-joint un fichier zip contenant tout de la fabrication a l'impression du graph vous n'avez qu'à l'ajuster selon vos besoins, ce qui devrait être assez facile en principle vous n'avez changer le fichier lecture.dbf dans le dataenvironment de la forme graph &lt;br /&gt;</description><author>renrobi</author><category>01 - PRG : Programmation</category><pubDate>Wed, 01 Jul 2009 01:56:37 GMT</pubDate></item><item><title>Outlook.h</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000703</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000703</guid><description>Bon ben j'ai trouvé ça par hasard sur mon disque c: &lt;br /&gt;</description><author>eddymaue</author><category>Outlook</category><pubDate>Fri, 19 Jun 2009 01:56:37 GMT</pubDate></item><item><title>Calcul et verification d'un code EAN</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000702</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000702</guid><description>http://en.wikipedia.org/wiki/European_Article_Number &lt;br /&gt; &lt;br /&gt; Calcul et verification de codes EAN - 8, 13, 18, ... &lt;br /&gt; Pas de verification de la longueur de la clef &lt;br /&gt; &lt;br /&gt;</description><author>Gregory Adam</author><category>Calculs de clefs et Checksums (rib, iban, ...)</category><pubDate>Sat, 06 Jun 2009 01:56:37 GMT</pubDate></item><item><title>CMD avec ShellExecute</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000701</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000701</guid><description>En fin je viens lire un bel article sur la CMD et toutes les commandes passées à la CMD, doivent l'etre ainsi. En tout cas ca fonctionne bien si on a qu'une ou deux commandes à passer.&lt;br /&gt;Dans le cas contraire ou plusieurs commandes sont nécessaires, l'emploit de d'un fichier avec extension BAT (Windows 98 et moins obligatoire) et CMD pour Win2k et plus.&lt;br /&gt;L'extension CMD est fortement recommandé. Si jamais par erreur vous tentiez d'exécuter un fichier.cmd sur Win98, ca ne fonctionnera pas.Pourquoi ? simplement qu'il y a de nouvelles&lt;br /&gt;commandes depuis la Win2k.&lt;br /&gt;&lt;br /&gt;Et avec Api ShellExecute c'est nikel&lt;br /&gt;&lt;br /&gt;m_ShellExecute("CMD","/c net start MonService")&lt;br /&gt;m_ShellExecute("CMD","/c net stop MonService")&lt;br /&gt;&lt;br /&gt;* L'exécution de cette commande place la listes des services démarrés de windows dans un fichier&lt;br /&gt;m_ShellExecute("CMD","/c net start &gt;c:\ListService.txt")&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;l'option /c est importante pour que CMD.EXE se ferme automatiquement si non on a des chances d'accumuler des processus CMD.EXE et finir par avoir un plantage du à un manque de mémoire&lt;br /&gt;&lt;br /&gt;un autre point intéressant, on peut passer plusieurs commandes, il s'agit de les séparées par &amp;&amp;. Avec vfp il faut utiliser chr(38)+chr(38) si non on va avoir des commentaires non désiré.&lt;br /&gt;&lt;br /&gt;* En gros je pourrais écrire&lt;br /&gt;&lt;br /&gt;m_ShellExecute("CMD" ;&lt;br /&gt; , [/s/c pause ];&lt;br /&gt; +Chr(38)+Chr(38)+[cd "C:\Program Files\Microsoft Visual FoxPro 9"];&lt;br /&gt; +Chr(38)+Chr(38)+[dir *.* &gt;c:\mvpdir.txt] ;&lt;br /&gt; +Chr(38)+Chr(38)+[pause];&lt;br /&gt; +Chr(38)+Chr(38)+[cd "c:\"])&lt;br /&gt;&lt;br /&gt;Et que font c'est commanedes&lt;br /&gt; une pause&lt;br /&gt; cd "C:\Program Files\Microsoft Visual FoxPro 9"&lt;br /&gt; place le Dir *.* dans c:\mvpdir.txt&lt;br /&gt; pause&lt;br /&gt; cd c:\&lt;br /&gt;&lt;br /&gt; Les memes commandes dans un fichier.cmd donnerait &lt;br /&gt; Set Confirm Off&lt;br /&gt;Set Safety Off&lt;br /&gt;TEXT TO cmdTxt TEXTMERGE NOSHOW&lt;br /&gt;PAUSE&lt;br /&gt;cd "C:\Program Files\Microsoft Visual FoxPro 9"&lt;br /&gt;dir *.* &gt;c:\mvpdir2.txt&lt;br /&gt;PAUSE&lt;br /&gt;cd c:\&lt;br /&gt;EndText&lt;br /&gt;StrToFile(cmdTxt,"c:\fichier.CMD")&lt;br /&gt; &lt;br /&gt;* Encore une fois l'emploit des ("") n'est utile que s'il y a des espaces dans la commande à passer&lt;br /&gt;* et nécessairement passer /s avec la commande du Shell&lt;br /&gt;&lt;br /&gt; m_ShellExecute("c:\fichier.cmd","") &amp;&amp; CMD a disparut, le shell par l'extension sait ce que sait&lt;br /&gt;m_ShellExecute("NotePad.exe","c:\mvpdir2.txt",1) &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Des options utiles :&lt;br /&gt;/s autorise le double quotes dans les commande. Utile s'il&lt;br /&gt; y a des espaces dans un chemin&lt;br /&gt; cd "C:\Program Files\Microsoft Visual FoxPro 9"&lt;br /&gt;/c force la femeture de la tache après exécution des commandes&lt;br /&gt;/k maintient la tâche ouverte après exécution des commandes&lt;br /&gt; il faut passer la commande Exit pour fermer la tache&lt;br /&gt; si non avec le parametre SW_HIDE dans le ShellExecute&lt;br /&gt; va accumuler les CMDs comme tache de fond &lt;br /&gt; dans le TaskManager&lt;br /&gt;&lt;br /&gt;Des liens&lt;br /&gt;http://www.ss64.com/nt/cmd.html&lt;br /&gt;http://www.zebulon.fr/dossiers/63-invite-de-commandes-cmd.html&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;voilà c'est tout&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Procedure m_ShellExecute&lt;br /&gt; Lparameters lcFILE,lcChaine,lnSW&lt;br /&gt; &lt;br /&gt; lnSW = iif(Vartype(lnSW)=="N",lnSW,0)&lt;br /&gt; &lt;br /&gt; * lnSW = 0 --&gt; sw_hide&lt;br /&gt; * lnSW = 1 --&gt; sw_normal&lt;br /&gt;&lt;br /&gt; Declare Integer ShellExecute In shell32.Dll ;&lt;br /&gt; Integer hndWin, ;&lt;br /&gt; STRING cAction, ;&lt;br /&gt; STRING cFileName, ;&lt;br /&gt; STRING cParams, ;&lt;br /&gt; STRING cDir, ;&lt;br /&gt; INTEGER nShowWin&lt;br /&gt; =ShellExecute(0,"Open",lcFILE,lcChaine,"",lnSW)&lt;br /&gt;Endproc&lt;br /&gt;&lt;br /&gt;a+ Eddy&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;P.S. pis en plus on a pas de fenetre qui flash &lt;br /&gt;</description><author>eddymaue</author><category>01 - PRG : Programmation</category><pubDate>Wed, 03 Jun 2009 01:56:37 GMT</pubDate></item><item><title>cdo.h</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000700</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000700</guid><description>Cdo.h &lt;br /&gt;</description><author>Gregory Adam</author><category>12 - Envoyer des Emails</category><pubDate>Tue, 02 Jun 2009 01:56:37 GMT</pubDate></item><item><title>PREMIERS PAS AVEC MAPIX DEPUIS VFP</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000697</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000697</guid><description>Bonjour à toutes et à tous &lt;br /&gt; A la demande de lemrabot, voici un projet qui vous permettra de démarrer avec l'ocx de map info &lt;br /&gt; Lemrabot, je ne l'ai pas documenté car je suis très pris par roland garros, mais lors de ma prochaine mission en mauritanie, nous en reparlerons plus longuement, et comme vous êtes un bon développeur, vous allez vite vous y retrouver. &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; Bonne journée à toutes et à tous &lt;br /&gt; Cordialement &lt;br /&gt; Aumeric &lt;br /&gt; &lt;br /&gt;</description><author>aumeric</author><category>08 - ActiveX - (OLE)</category><pubDate>Sun, 31 May 2009 01:56:37 GMT</pubDate></item><item><title>RegexPatternBuilder class en C#</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000696</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000696</guid><description>La meme chose que http://www.atoutfox.com/articles.asp?ACTION=FCONSULTER&amp;ID=0000000695 &lt;br /&gt; &lt;br /&gt; Il faut aussi le Topological Sort en C# - http://www.atoutfox.com/articles.asp?ACTION=FCONSULTER&amp;ID=0000000526 &lt;br /&gt; &lt;br /&gt; Il y a un exemple dans le code source &lt;br /&gt; &lt;br /&gt; Enlever // de la ligne suivante + F5 (contient un static void Main()) qui montre l'exemple &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; // #define LOGIC_TEST // comment for production, uncomment for test sample &lt;br /&gt; &lt;br /&gt; //----------------------------------------------------------------------- &lt;br /&gt; &lt;br /&gt; MAJ 2009/05/28 &lt;br /&gt; Accepte des definitions d'une ligne : exemple dans la section de code &lt;br /&gt; &lt;br /&gt; //----------------------------------------------------------------------- &lt;br /&gt;</description><author>Gregory Adam</author><category>01 C#</category><pubDate>Wed, 27 May 2009 01:56:37 GMT</pubDate></item><item><title>RegExPatternHelper class</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000695</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000695</guid><description>RegexPatternHelper &lt;br /&gt; &lt;br /&gt; Le but de cette classe est de faciliter la création de Patterns &lt;br /&gt; Il est assez difficile d&amp;rsquo;écrire un pattern qui accepte une date. Si on ajoute (1) qu&amp;rsquo;on accepte les années en 2 et en 4 positions, (2) que le séparateur peut être / ou -, (3) qu&amp;rsquo;on va valider au maximum les dates, cela devient assez difficile &lt;br /&gt; Mais si on pouvait définir des pièces qu&amp;rsquo;on va réutiliser, cela devient un peu plus facile &lt;br /&gt; Il faut aussi télécharger le Topological Sort : &lt;br /&gt; http://www.atoutfox.com/articles.asp?ACTION=FCONSULTER&amp;ID=0000000645 &lt;br /&gt; &lt;br /&gt; Il faut mettre RegexPatternHelper.prg dans le repertoire 'Prog' et l'ajouter a Set Proc &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; Voir &lt;br /&gt; (1) L&amp;rsquo;exemple &lt;br /&gt; (2) La docu dans RegexPatternHelper.prg en haut &lt;br /&gt; &lt;br /&gt; Comment est-ce que ca marche ? &lt;br /&gt; &lt;br /&gt; &gt;&gt; Regarder la definition dans le code. Html ne fait pas un bon travail si je l'inclus ici &lt;br /&gt; (1) On commence d&amp;rsquo;abord par mettre les lignes de la définition dans une collection. La clef sera la partie gauche de la ligne (eg ddmmyyyy_slash ) et le contenu sera la partie droite (eg \b(\/\d{4})\b ) &lt;br /&gt; &lt;br /&gt; (2) Puis on parcourt toutes les définitions pour en extraire les définitions dépendantes (eg ddmm_slash dépend de ddmm_29_slash, ddmm_30_slash et de ddmm_31_slash &lt;br /&gt; (3) Puis on fait un tri (topological sort) qui va retourner un ordre d&amp;rsquo;évaluation. Eg, il faut évaluer ddmm_29_slash, ddmm_30_slash et ddmm_31_slash avant d&amp;rsquo;évaluer ddmm_slash. &lt;br /&gt; (4) Ayant obtenu un ordre d&amp;rsquo;évaluation on va traiter la collection dans cet ordre. Le traitement est simple, juste remplacer la définition. L&amp;rsquo;astuce est de le faire dans le bon ordre. &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; Ps : il est possible de mettre les définitions courantes dans un champ memo d&amp;rsquo;une table incluse dans le projet &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;</description><author>Gregory Adam</author><category>Maths - Matrices - Algos</category><pubDate>Sat, 23 May 2009 01:56:37 GMT</pubDate></item><item><title>RegexPattern pour une date europeenne</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000694</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000694</guid><description>&lt;br /&gt; Pattern pour reconnaitre des dates europeennes &lt;br /&gt; format: dd/mm/yyyy ou dd-mm-yyyy &lt;br /&gt; &lt;br /&gt; Ne prend pas de dates invalides, eg 31/11/2008 &lt;br /&gt; Quant au mois de fevrier, prend max 29/02 &lt;br /&gt; &lt;br /&gt; voir - un peu moins artisanal &lt;br /&gt; http://www.atoutfox.com/articles.asp?ACTION=FCONSULTER&amp;ID=0000000695 &lt;br /&gt; &lt;br /&gt;</description><author>Gregory Adam</author><category>Temps - heures - Dates - Calendriers</category><pubDate>Fri, 22 May 2009 01:56:37 GMT</pubDate></item><item><title>Comment montrer un PDF dans une forme Foxpro</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000693</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000693</guid><description>Ce code inclus la vérification de la présence de l'activex Adobe Acrobat Reader avant de rouler la forme. &lt;br /&gt;</description><author>Mike Gagnon</author><category>08 - ActiveX - (OLE)</category><pubDate>Tue, 19 May 2009 01:56:37 GMT</pubDate></item><item><title>GetPath</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000692</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000692</guid><description>Salut à tous, &lt;br /&gt; &lt;br /&gt; Au fil des annnées j'ai souvent et je dirais trop souvent essayé des exemples dont les liasons &lt;br /&gt; entre fichiers étaient erratiques. J'ai compris le pourquoi quand Gregory m'a répondu &lt;br /&gt; ( voir http://www.atoutfox.org/articles.asp?ACTION=FCONSULTER&amp;ID=0000000690) &lt;br /&gt; &lt;br /&gt; Si je mets mes forms dans un repertoire X &lt;br /&gt; Si je mets mes prog de ce projet dans un repertoire Y &lt;br /&gt; Si je mets mes prog communs a tous les projets dans un repertoire Z &lt;br /&gt; Comment - le load du form saura-t-il ou se trouve gridcompanion.prg ? &lt;br /&gt; &lt;br /&gt; Bien je vais répondre à cette question. Là ou tu l'as mis Greg ;o) &lt;br /&gt; &lt;br /&gt; Ce qui m'amène aussi à réaliser que Sys(16) est mal compris et que son utilisation n'est pas adéquatement bien utilsé. &lt;br /&gt; &lt;br /&gt; Sys(16) retourne trois types d'indications différents. Enfin c'est du texte qu'il retourne. &lt;br /&gt; &lt;br /&gt; 1er cas -- dans un fichier.prg on aura &lt;br /&gt; e:\owner\eddy\visual foxpro projects\essaisgetpath\program1.fxp &lt;br /&gt; &lt;br /&gt; en gros l'emplacement du fichier compiler. &lt;br /&gt; &lt;br /&gt; 2ieme -- dans une procedure d'un programme on aura &lt;br /&gt; procedure testsys16 e:\owner\eddy\visual foxpro projects\essaisgetpath\program1.fxp &lt;br /&gt; &lt;br /&gt; on y retrouve le mot procedure + le nom de la procedure et enfin le fichier compilé &lt;br /&gt; avec son emplacement sur le disque &lt;br /&gt; &lt;br /&gt; 3ieme -- dans une classe comme un formulaire ou un objet aura ce qui suis &lt;br /&gt; procedure sys16obj.load e:\owner\eddy\visual foxpro projects\essaisgetpath\program1.fxp &lt;br /&gt; &lt;br /&gt; dans la procedure d'un objet s'ajoute le nom de l'objet + le nom de la procedure ainsi que le &lt;br /&gt; nom etl'emplacement du fichier contenant l'objet exécuté &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; Dans ces trois cas on a un point commun et c'est le double points ':' qui sépare le chemin du &lt;br /&gt; disque local &lt;br /&gt; &lt;br /&gt; Faut donc simplement éliminer ce qu'il y a avant le disque local pour trouver ce que l'on veut. &lt;br /&gt; Soit le chemin du fichier exécuté sur le disque de notre ordi. &lt;br /&gt; &lt;br /&gt; Quand je charge un exemple que soit sur Atoutfox ou ailleurs, je ne commence pas à modifier l'emplacement &lt;br /&gt; de ces fichiers. Je dézippe le tout et le place dans un dossier spécial. Enfin j'isole le tout pour qu'il n'y &lt;br /&gt; ait pas d'interraction avec mes fichiers de travail. &lt;br /&gt; &lt;br /&gt; Donc encore un fois si je reprends l'exemple de Greg ci-haut cité, je vais dans le load du formulaire et &lt;br /&gt; j'ajoute les lignes suivantes ; &lt;br /&gt; &lt;br /&gt; * Auteur Eddy Maue ;o) &lt;br /&gt; Local lcGetPath &amp;&amp; le chemin de ce fichier &lt;br /&gt; lcGetPath = JustPath(Substr(Sys(16),At(":",Sys(16))-1)) &lt;br /&gt; &lt;br /&gt; Set Procedure To (m.lcGetPath+'\gridcompanion.prg') ADDITIVE &lt;br /&gt; &lt;br /&gt; vous l'aurez compris j'obtiens ainsi le chemin ou j'ai placé le formulaire dans lcGetPath et ne reste plus qu'à lier le &lt;br /&gt; fichier de procedure gridcompanion.prg pour que l'exemple soit entièrement fonctionnel &lt;br /&gt; &lt;br /&gt; la valeur, chez moi, de lcGetPath est &lt;br /&gt; &lt;br /&gt; e:\owner\eddy\visual foxpro projects\exemple\gregory adam\mouseenterforgrid &lt;br /&gt; &lt;br /&gt; comme tous les fichiers de l'exemple sont dans ce répertoire il ne reste qu'à exécutéer la commande SET PROCEDURE TO &lt;br /&gt; &lt;br /&gt; Le code livré ci-bas insérera GetPath dans intellisence et tout ce qui reste à faire c'est de tapper Getpath pour avoir &lt;br /&gt; &lt;br /&gt; * Auteur Eddy Maue ;o) &lt;br /&gt; Local lcGetPath &amp;&amp; le chemin de ce fichier &lt;br /&gt; lcGetPath = JustPath(Substr(Sys(16),At(":",Sys(16))-1)) &lt;br /&gt; &lt;br /&gt; Voilà c'est tout simple &lt;br /&gt; &lt;br /&gt; Pour finir un p'tit rafraîchissement sur là resolution dynamique de recherches de fichiers &lt;br /&gt; dans les répertoires. &lt;br /&gt; &lt;br /&gt; set default to c:\MesProjetsVFP\RacineDeMonProjet &lt;br /&gt; &lt;br /&gt; c'est ici qu'on fixe l'origine de tout ce qui suit. Enfin presque &lt;br /&gt; c'est le point de référence de l'éxécutable ou de recherche &lt;br /&gt; des fichiers de Vfp &lt;br /&gt; &lt;br /&gt; on y placera nos sous-répertoires utiles à notre projet &lt;br /&gt; &lt;br /&gt; Tout au long du développement de l'application si on veut &lt;br /&gt; éviter d'écrire le sous-répertoire ou sont nos fichiers, on utilise &lt;br /&gt; le SET PATH TO &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; set path to data;forms;progs;.... &lt;br /&gt; permet de résoudre pour Vfp la recherche de fichiers dans les sous répertoires du projet &lt;br /&gt; ciblés par set default to. &lt;br /&gt; &lt;br /&gt; le Set Path TO permet l'emploit de .\ et ..\ pour pouvoir ce déplacer à d'autres niveaux de &lt;br /&gt; l'arbre du disque ciblé par SET DEFAULT TO &lt;br /&gt; &lt;br /&gt; on peut des lors écrire &lt;br /&gt; set Path to ..\commun\class additive &lt;br /&gt; &lt;br /&gt; se qui permetera la recherche de fichiers sur des répertoires de &lt;br /&gt; de niveaux inférieurs à notre projet sans qu'on est besoin de constamement &lt;br /&gt; écrire le chemin complet. Dans ce cas ci le dossier commun est sur &lt;br /&gt; le meme niveau que le répertoire du projet &lt;br /&gt; &lt;br /&gt; travailler sur le meme répertoire ciblié par SET DEFA TO &lt;br /&gt; .\Data\Matable &lt;br /&gt; &lt;br /&gt; au final la structure d'un projet peut ressembler à ceci &lt;br /&gt; &lt;br /&gt; c:\MesProjetsVFP &lt;br /&gt; \Commun &lt;br /&gt; \headers &lt;br /&gt; \class &lt;br /&gt; \progs &lt;br /&gt; \RacineDeMonProjet &lt;br /&gt; \Data &lt;br /&gt; \Forms &lt;br /&gt; \progs &lt;br /&gt; \reports &lt;br /&gt; \headers &lt;br /&gt; \class &lt;br /&gt; \labels &lt;br /&gt; \docs &lt;br /&gt; \autres &lt;br /&gt; &lt;br /&gt; Seul l'inclusion des fichiers d'entêtes (*.h) ne sont pas soumis à ces règles. &lt;br /&gt; Pourquoi ?. Parce que les fichiers d'entêtes sont précompilés et donc SET DEFAULTO &lt;br /&gt; et SET PATH ne sont pas utiles il faut donc localiser et situer dans l'arbre &lt;br /&gt; l'emplacement du fichier.h delà l'importance de comprendre la &lt;br /&gt; mécanique de .\ et ..\ &lt;br /&gt; &lt;br /&gt; Ce n'est pas important de savoir ou sont localisé nos fichiers si on se rapporte à &lt;br /&gt; là racine du disque. L'important c'est de savoir à quel niveau en dessous ou au dessus &lt;br /&gt; sont localisés les fichiers d'entêtes que nous voulons inclure à un projet ou à un fichier. &lt;br /&gt; &lt;br /&gt; Partons d'une racine connue &lt;br /&gt; &lt;br /&gt; e:\TousMesProjetsVFP\ &lt;br /&gt; &lt;br /&gt; Exemple : &lt;br /&gt; .\commun\class &lt;br /&gt; .\commun\headers &lt;br /&gt; .\MonProjet &lt;br /&gt; .\Data &lt;br /&gt; .\prgs &lt;br /&gt; .\headers &lt;br /&gt; .... &lt;br /&gt; &lt;br /&gt; ce qui ce traduit par &lt;br /&gt; &lt;br /&gt; e:\TousMesProjetsVFP\commun\class &lt;br /&gt; e:\TousMesProjetsVFP\commun\headers &lt;br /&gt; e:\TousMesProjetsVFP\MonProjet &lt;br /&gt; e:\TousMesProjetsVFP\MonProjet\Data &lt;br /&gt; e:\TousMesProjetsVFP\MonProjet\prgs &lt;br /&gt; e:\TousMesProjetsVFP\MonProjet\headers &lt;br /&gt; e:\TousMesProjetsVFP\MonProjet\ .... &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; C'est là une des forces de Vfp, on a pas besoin de connaître la racine &lt;br /&gt; d'un projet ou d'un fichier. On a seulement besoin de connaître son &lt;br /&gt; emplacement relatif. &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; Dans un programme je pourrais avoir à inclure des fichiers d'entêtes localisés &lt;br /&gt; aux emplacements suivants : &lt;br /&gt; .\commun\headers\edition.h &lt;br /&gt; .\commun\headers\treeview.h &lt;br /&gt; .\MonProjet.h &lt;br /&gt; .\headers\un.h &lt;br /&gt; .\\headers\deux.h &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; La solution toute simple est de faire toute les liasions dans un seul fichier d'entête &lt;br /&gt; soit celui à la racine du projet. C'est mon choix et le votre peut etre différent. &lt;br /&gt; Mais au final, nous aurons le même résultat. &lt;br /&gt; &lt;br /&gt; Des lors le set default et le set path ne servent à rien ici. &lt;br /&gt; tout ce passe à partir du répertoire hôte du fichier.h &lt;br /&gt; &lt;br /&gt; L'exemple ici suppose que MonProjet.h est dans le répertoire hôte &lt;br /&gt; du projet &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; *Fichier MonProjet.h &lt;br /&gt; &lt;br /&gt; #include ..\commun\headers\edition.h &lt;br /&gt; #include ..\commun\headers\treeview.h &lt;br /&gt; #include .\headers\un.h &lt;br /&gt; #include .\headers\deux.h &lt;br /&gt; &lt;br /&gt; Pour atteindre Edition.h, l'emploit de ..\ permet de remonter d'un &lt;br /&gt; niveau et reste qu'à situer Edition.h avec l'ajout des répertoires &lt;br /&gt; commun\headers &lt;br /&gt; &lt;br /&gt; Un autre exemple, plutot de placer MonProjet.h dans le &lt;br /&gt; répertoire hôte du projet. Plaçons le dans le répertoire Headers &lt;br /&gt; du projet &lt;br /&gt; &lt;br /&gt; .\MonProjet\headers\MonProjet.h &lt;br /&gt; &lt;br /&gt; ce qui nous donne dans MonProjet.h &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; #include ..\..\commun\headers\edition.h &lt;br /&gt; #include ..\..\commun\headers\treeview.h &lt;br /&gt; #include un.h &lt;br /&gt; #include deux.h &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; Dans votres prochain exemple que vous soumetterez vous n'aurez plus de problemes &lt;br /&gt; si vous suivez c'est regles de bases. &lt;br /&gt; &lt;br /&gt; Si je joins plusieux fichiers dans un exemple à proposer j'agis comme suivant : &lt;br /&gt; &lt;br /&gt; je présume que vous enregistrerez mon exemple dans un répertoire qui lui est propre &lt;br /&gt; j'évite d'affecter SET DEFAULT TO et SET PATH TO. Si je ne peux faire autrement, &lt;br /&gt; je les sauve dans des variables et je restore à la fin de l'exemple. &lt;br /&gt; &lt;br /&gt; Pour les entêtes à inclure ca passe exactement comme décrit plus haut. &lt;br /&gt; &lt;br /&gt; Pour tout autres types de fichiers il faut savoir ou notre fichier principal est localisé sur &lt;br /&gt; le disque. &lt;br /&gt; &lt;br /&gt; Et c'est là que GetPaht est utile &lt;br /&gt; &lt;br /&gt; Define Class TestGetPaph As Form &lt;br /&gt; &lt;br /&gt; 	 Procedure Load &lt;br /&gt; &lt;br /&gt; 		 * Auteur Eddy Maue ;o) &lt;br /&gt; 		 Local lcGetPath &amp;&amp; le chemin de ce fichier &lt;br /&gt; 		 lcGetPath = Justpath(Substr(Sys(16),At(":",Sys(16))-1)) &lt;br /&gt; &lt;br /&gt; 		 Set Procedure To (m.lcGetPath+'\gridcompanion.prg') Additive &lt;br /&gt; &lt;br /&gt; 		 Use (m.lcGetPath+"\Matable") In 0 &lt;br /&gt; 		 Do (m.lcGetPath+"\MonFichier.prg") &lt;br /&gt; &lt;br /&gt; 	 Endproc &lt;br /&gt; &lt;br /&gt; EndDefine &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; Bon ca peut devenir rébarbatif de sur employé GetPath si on a beaucoup de fichiers &lt;br /&gt; ( forms,progs,tables et autres ) &lt;br /&gt; &lt;br /&gt; Define Class TestGetPath As Form &lt;br /&gt; 	 p_cPath = "" &lt;br /&gt; 	 p_cDefault = "" &lt;br /&gt; &lt;br /&gt; 	 Procedure Load &lt;br /&gt; &lt;br /&gt; 		 With Thisform &lt;br /&gt; &lt;br /&gt; 			 .p_cPath = Set("Path") &lt;br /&gt; 			 .p_cDefault = Set("Default") &lt;br /&gt; &lt;br /&gt; 		 Endwith &lt;br /&gt; &lt;br /&gt; 		 * Auteur Eddy Maue ;o) &lt;br /&gt; 		 Local lcGetPath &amp;&amp; le chemin de ce fichier &lt;br /&gt; 		 lcGetPath = Justpath(Substr(Sys(16),At(":",Sys(16))-1)) &lt;br /&gt; &lt;br /&gt; 		 Set Default To (m.lcGetPath) &lt;br /&gt; 		 Set Path To Data;Class &lt;br /&gt; &lt;br /&gt; 		 #include .\MonFichier.h &lt;br /&gt; &lt;br /&gt; * ici le code utile pour la suite de l'exemple &lt;br /&gt; &lt;br /&gt; 	 Endproc &lt;br /&gt; &lt;br /&gt; 	 Procedure Destroy &lt;br /&gt; &lt;br /&gt; 		 With This &lt;br /&gt; &lt;br /&gt; 			 Set Default To (.p_cDefault) &lt;br /&gt; 			 Set Path To (.p_cPath) &lt;br /&gt; &lt;br /&gt; 		 Endwith &lt;br /&gt; 	 Endproc &lt;br /&gt; &lt;br /&gt; Enddefine &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; A+ Eddy Maue &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;</description><author>eddymaue</author><category>20 - Trucs et Astuces</category><pubDate>Sun, 17 May 2009 01:56:37 GMT</pubDate></item><item><title>Coloriser un objet asp.net a partir de couleur rvb.</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000691</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000691</guid><description>Quand on a besoin de coloriser des objets en asp.net par programmation. &lt;br /&gt; &lt;br /&gt; Alors je livre l'astuce qui en foxpro est d'une simplicité, mais j'ai du cherché en .net &lt;br /&gt; &lt;br /&gt; Pour asp.net on a deux moyens. &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;</description><author>Olivier Hamou</author><category>80 dotnet</category><pubDate>Tue, 12 May 2009 01:56:37 GMT</pubDate></item><item><title>Détecter 'MouseEnter' dans une cellule d'une grille</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000690</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000690</guid><description>Détecter &amp;lsquo;MouseEnter&amp;rsquo; dans une cellule d&amp;rsquo;une grille &lt;br /&gt; Permet d&amp;rsquo;appeler une méthode ou une fonction quand la souris survole les lignes d&amp;rsquo;une colonne spécifiée &lt;br /&gt; Il suffit d&amp;rsquo;ajouter un objet au parent de la grille (voir fonction GridCompanion_Add() ) &lt;br /&gt; Apres, on peut spécifier la colonne + Expression de champ + méthode/fonction a appeler quand la souris change de cellule dans la colonne en question. &lt;br /&gt; L&amp;rsquo;expression de champ ne doit pas être égale au ControlSource de la colonne, mais il n&amp;rsquo;y a rien qui l&amp;rsquo;empêche. &lt;br /&gt; Exemple de code &amp;ndash; voir aussi l&amp;rsquo;exemple &amp;ndash; vers la fin de grid1.init() &lt;br /&gt; local CompanionObj &lt;br /&gt; &lt;br /&gt; do case &lt;br /&gt; case !GridCompanion_Add(GridObjectReference, @m.CompanionObj) &lt;br /&gt; &amp;&amp; error &lt;br /&gt; case !m.CompanionObj.ColumnMouseWatcher_Add( ; &lt;br /&gt; ControlSourceOfColumnToWatch, ; &lt;br /&gt; FieldExpression, ; &lt;br /&gt; FormMethod ; &lt;br /&gt; ) &lt;br /&gt; &amp;&amp; error &lt;br /&gt; &lt;br /&gt; endcase &lt;br /&gt; &lt;br /&gt; GridObjectReference: = référence de la grille, eg m.this ou thisform.Grid1 &lt;br /&gt; CompanionObj: la référence du compagnon est retournée et peut être utilisée ensuite pour ajouter des colonnes a &amp;lsquo;surveiller&amp;rsquo; &lt;br /&gt; ControlSourceOfColumnToWatch: le controlSource de la colonne à &amp;lsquo;surveiller&amp;rsquo;. Puisqu&amp;rsquo;il n&amp;rsquo;est pas toujours facile de passer le numéro de colonne ou le nom de la colonne, le controlSource suffit. &lt;br /&gt; FieldExpression: par exemple le controlSource de cette colonne, le controlSource d&amp;rsquo;un champ du RecordSource de la grille, ou toute autre expression (eg Table1.Montant / 2) &lt;br /&gt; FormMethod: nom d&amp;rsquo;une méthode du form, ou nom d&amp;rsquo;une fonction. Cette méthode/fonction sera appelée avec la FieldExpression correspondante ( eg eval(Table1.Montant / 2) ) &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; Quand on lance l'exemple il faut regarder le contenu des textbox en haut quand on survole les boutons de commande avec la souris. &lt;br /&gt; Une colonne surveillée peut être supprimée de la &amp;lsquo;surveillance&amp;rsquo; : voir ColumnMouseWatcher_Remove(ControlSourceOfColumnToWatch) &lt;br /&gt; &lt;br /&gt; Comment est-ce que cela marche ? &lt;br /&gt; Une expression DynamicFontShadow est ajoutée à la colonne. Quand cette expression est évaluée, la FieldExpression évaluée est ajoutée à une collection (par colonne) &lt;br /&gt; Les clauses dynamiques sont évaluées de gauche à droite et de haut en bas. &lt;br /&gt; Pour garder le contenu de la collection synchronisé avec ce qui est affiché dans la grille, il faut, a certains moments (événements) supprimer le contenu de la collection et remplir la collection par âpres. Une façon de remplir le contenu de la collection est de forcer l&amp;rsquo;évaluation de la clause DynamicFontShadow. Ceci se fait en modifiant la hauteur de la grille (j&amp;rsquo;ajoute 1 a la hauteur, la prochaine fois -1, &amp;hellip;) &lt;br /&gt; Il y a assez de BindEvent() &lt;br /&gt;</description><author>Gregory Adam</author><category>20 - Trucs et Astuces</category><pubDate>Mon, 11 May 2009 01:56:37 GMT</pubDate></item><item><title>Quelques outils autour du gestionnaire de projet</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000689</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000689</guid><description>Lorsqu'on ouvre un projet on instancie (sans le savoir ?) une classe "projecthook". Cette classe peut être sous-classée. On peut donc lui ajouter des propriétés et des méthodes utilisables dans tous nos projets. Et cette sous-classe peut aussi être elle-même sous-classée pour être personnalisée avec chaque projet (du classique quoi !). &lt;br /&gt; &lt;br /&gt; Je vous montre donc comment indiquer qu'un projet dépend d'une autre classe que le projecthook de base et un exemple de ce qui peut se faire comme outils complémentaires : liste de toutes les forms du projet avec leur paramétrage concernant l'environnement de données et liste de toutes les librairies et classes du projet avec une indentation indiquant la hierarchie des classes. &lt;br /&gt; &lt;br /&gt; Il suffit de dézipper le fichier joint. Le fichier projecthook_lisezmoi.txt contient la documentation. &lt;br /&gt; &lt;br /&gt; Je suis à votre disposition pour toutes explications supplémentaires. &lt;br /&gt; &lt;br /&gt; J. MAURICE &lt;br /&gt;</description><author>Jean à Grenoble</author><category>21 - Outils</category><pubDate>Tue, 28 Apr 2009 01:56:37 GMT</pubDate></item><item><title>traiter des fichiers csv avec des champs memo</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000688</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000688</guid><description>Microsoft nous apporte deux articles à ce sujet &lt;br /&gt; j'ai voulu les diffuser sur ce site afin que le maximum de personnes &lt;br /&gt; puissent trouver leur bonheur. &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; Comment faire pour ajouter des enregistrements à partir d'un fichier délimité avec des données Mémo http://support.microsoft.com/kb/140294 &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; Comment faire pour en lecture des données de champ de note à partir des fichiers ASCII délimité http://support.microsoft.com/kb/115731&lt;br /&gt;&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; * DATE MODIF : 25.04.09 par olivier hamou&lt;br /&gt; * J'ai modifié le code afin que cette function &lt;br /&gt; * puisse comprendre les types de données autre que le caractère &lt;br /&gt; * variable pris en charge dans le cursor ou votre table : &lt;br /&gt; * &lt;br /&gt; &lt;br /&gt; DO CASE&lt;br /&gt; CASE m.cVARTYPE $ "N-Y-B-F-I"&lt;br /&gt; REPLACE &amp;structure[i,1] WITH VAL(accum_text)&lt;br /&gt; CASE m.cVARTYPE $ "C-M-Q-V-W"&lt;br /&gt; REPLACE &amp;structure[i,1] WITH alltr(accum_text)&lt;br /&gt; CASE m.cVARTYPE $ "D"&lt;br /&gt; REPLACE &amp;structure[i,1] WITH ctod(accum_text)&lt;br /&gt; CASE m.cVARTYPE $ "T"&lt;br /&gt; REPLACE &amp;structure[i,1] WITH ctot(accum_text)&lt;br /&gt; ENDCASE &lt;br /&gt;</description><author>Olivier Hamou</author><category>Import - Export</category><pubDate>Fri, 24 Apr 2009 01:56:37 GMT</pubDate></item><item><title>Calcul de la Clé IBAN</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000687</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000687</guid><description>Cette fonction permet à partir d'un Code Pays et d'un numéro de compte de renvoyer la Clé IBAN. &lt;br /&gt; &lt;br /&gt; On envoie "FR" et un N&amp;deg; de Compte "132061100000000562...." complet donc pour les comptes français avec la Clé RIB incluse et cela renvoie le Code Pays passé en entrée suivi de la Clé de Contrôle (Exemple : FR76). &lt;br /&gt; &lt;br /&gt; Cette fonction a été écrite en s'appuyant sur des Contributions AtoutFox, sur des réponses que j'ai eues dans le news "microsoft.public.fr.fox" et je remercie ceux qui y ont participés. &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; TESTUD Jean-Marc ( www.testud.fr ) &lt;br /&gt;</description><author>JMT</author><category>Calculs de clefs et Checksums (rib, iban, ...)</category><pubDate>Wed, 22 Apr 2009 01:56:37 GMT</pubDate></item><item><title>Nom d'un fichier ou Nom d'un répertoire respectant la Casse (case)</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000686</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000686</guid><description>Bonjour &lt;br /&gt; &lt;br /&gt; Suite à une question dans le newsgroup microsoft.fr.fox &lt;br /&gt; je me permet une petite contrib pour répondre... &lt;br /&gt; &lt;br /&gt; à vos tests &lt;br /&gt; &lt;br /&gt; Cordialement &lt;br /&gt; Francis FAURE &lt;br /&gt;</description><author>Francis Faure</author><category>Conversions</category><pubDate>Tue, 21 Apr 2009 01:56:37 GMT</pubDate></item><item><title>lire un fichier en http</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000685</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000685</guid><description>juste mettre le contenu d'un fichier disponible sur internet dans une variable. &lt;br /&gt; Pour cela l'API UrlDownloadToFile pourrait suffire mais elle va lire dans le cache en local. De plus, elle ne rend pas la main immédiatement si il y a un problème... &lt;br /&gt; &lt;br /&gt; Donc : ? ReadInternetFile("http://oMiro.free.fr/VersionDisponible.txt") &lt;br /&gt; &lt;br /&gt; Attention à la casse &lt;br /&gt; Attention à la redirection automatique de certains serveurs (Les erreurs 403 ou 404 par ex. ne sont analysées que si le mot est présent dans le titre). &lt;br /&gt; &lt;br /&gt; Par défaut, le buffer de lecture est de 2 kilo-octets. C'est modifiable directement en passant une seconde variable &lt;br /&gt; ? ReadInternetFile(("http://sedoparking.com/parking.php", 255*1024) par exemple. &lt;br /&gt; &lt;br /&gt; =========== Oubli de la déclaraton de la dll de base... ============= &lt;br /&gt; =========== 1000 excuses pour ceux qui ont testé avant le 15 avril 13:40 ============= &lt;br /&gt;</description><author>Black Sabbath</author><category>13 - Web</category><pubDate>Wed, 15 Apr 2009 01:56:37 GMT</pubDate></item><item><title>09-23 Sybase iAnyhere</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000683</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000683</guid><description>Slides en Français de la présentation de Kemal Haslaman aux Rencontres AtoutFox 2009 &lt;br /&gt;</description><author>François 37</author><category>2009 - Rencontres - Paris Roissy</category><pubDate>Tue, 31 Mar 2009 01:56:37 GMT</pubDate></item><item><title>Versions de FoxPro : "FoxPro History" rappel de Ken LEVY aux conférences AtoutFox 2009</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000682</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000682</guid><description>FoxPro History &lt;br /&gt; 1984 - Fox Software releases FoxBase&lt;br /&gt;1989 - FoxPro 1.0 for DOS&lt;br /&gt;1991 - FoxPro 2.0 for DOS&lt;br /&gt;1992 - Microsoft buys Fox Software for $173M&lt;br /&gt;1993 - FoxPro 2.5 for Windows&lt;br /&gt;1995 - Visual FoxPro 3 (TAZ)&lt;br /&gt;1996 - Visual FoxPro 5 (ROADRUNNER)&lt;br /&gt;1998 - Visual FoxPro 6 (THAOE)&lt;br /&gt;2001 - Visual FoxPro 7 (SEDONA)&lt;br /&gt;2003 - Visual FoxPro 8 (TOLEDO)&lt;br /&gt;2004 - Visual FoxPro 9 (EUROPA)&lt;br /&gt;2007 - Sedna and SP2 for VFP 9&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; PS : &lt;br /&gt; liens en relation : &lt;br /&gt; &lt;br /&gt; http://fox.wikis.com/wc.dll?Wiki~FoxProVersions &lt;br /&gt; &lt;br /&gt; http://www.foxprohistory.org/ &lt;br /&gt; &lt;br /&gt;</description><author>Francis Faure</author><category>60 - AtoutFox</category><pubDate>Sun, 29 Mar 2009 01:56:37 GMT</pubDate></item><item><title>09-31 Virtualisations applicatives : Xenocode &amp; GoGlobal - OpenID</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000681</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000681</guid><description>Slides de la présentation aux Rencontres 2009 &lt;br /&gt;</description><author>Francis Faure</author><category>2009 - Rencontres - Paris Roissy</category><pubDate>Sun, 29 Mar 2009 01:56:37 GMT</pubDate></item><item><title>09-14 Etat des projets : Guineu - Francis FAURE</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000679</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000679</guid><description>Slides de Christof Wollenhaupt / FoxExpert pour présentation GUINEU aux Rencontres 2009 &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;</description><author>Francis Faure</author><category>2009 - Rencontres - Paris Roissy</category><pubDate>Sat, 28 Mar 2009 01:56:37 GMT</pubDate></item><item><title>09-14 Etat des projets : VFPCompiler - Francis FAURE</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000678</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000678</guid><description>Slides de la présentation aux Rencontres 2009 &lt;br /&gt;</description><author>Francis Faure</author><category>2009 - Rencontres - Paris Roissy</category><pubDate>Sat, 28 Mar 2009 01:56:37 GMT</pubDate></item><item><title>09-14 Etat des projets : VFPX - Francis FAURE</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000677</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000677</guid><description>Slides de la présentation aux Rencontres 2009 &lt;br /&gt;</description><author>Francis Faure</author><category>2009 - Rencontres - Paris Roissy</category><pubDate>Sat, 28 Mar 2009 01:56:37 GMT</pubDate></item><item><title>09-13 Beyond Visual FoxPro 9.0 - Ken Levy</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000676</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000676</guid><description>Slides de la présentation aux Rencontres 2009 &lt;br /&gt;</description><author>Francis Faure</author><category>2009 - Rencontres - Paris Roissy</category><pubDate>Sat, 28 Mar 2009 01:56:37 GMT</pubDate></item><item><title>09-11 Keynote VFPS Visual FoxPro Stack - Ken Levy</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000675</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000675</guid><description>Slides de la présentation aux Rencontres 2009 &lt;br /&gt;</description><author>Francis Faure</author><category>2009 - Rencontres - Paris Roissy</category><pubDate>Sat, 28 Mar 2009 01:56:37 GMT</pubDate></item><item><title>utiliser FluorineFx AMF3 (.NET) pour communiquer avec FLEX</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000674</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000674</guid><description>&lt;br /&gt; Afin de comprendre comment interagir entre Adobe Flex 3 et FluorineFx (asp.net) &lt;br /&gt; &lt;br /&gt; Voici un tutoriel : http://blog.wintondeshong.com/?p=21 &lt;br /&gt; &lt;br /&gt;</description><author>Olivier Hamou</author><category>Flex</category><pubDate>Thu, 19 Mar 2009 01:56:37 GMT</pubDate></item><item><title>Quelques utilitaires pour tableaux</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000672</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000672</guid><description>La documentation est dans le code ! &lt;br /&gt; Toutes mes excuses pour les éventuelles dépendances non résolues &lt;br /&gt;</description><author>zenbuyer</author><category>Tableaux / Array</category><pubDate>Mon, 23 Feb 2009 01:56:37 GMT</pubDate></item><item><title>GENDBCXM : générer la reconstruction d'une BDD et les classes d'accès aux tables</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000671</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000671</guid><description>ATTENTION version BETA 19/02/2009&lt;br /&gt; &lt;br /&gt;GENDBC est un utilitaire livré avec VFP qui, à parir d'une base de donnée, génère le programme capable de la regénérer.&lt;br /&gt;&lt;br /&gt;Sur www.leafe.com, Steve Arnott a créé (en 1997 !) GENDBCX qui améliore grandement le programme initial. Gendbcx génère une classe avec une méthode pour recréer la bdd, une méthode pour recréer les tables, une méthode pour recréer les vues, etc etc ... On peut lancer toutes les méthodes pour recréer tous les éléments de la bdd mais on peut ne lancer que la récréation des vues, ou ....&lt;br /&gt;&lt;br /&gt;Gendbcxm.prg ajoute à gendbcx la génération des classes d'accès à chaque table. Pour chaque table de la bdd on obtient : &lt;br /&gt; - un grand commentaire donnant toutes les caractéristiques de la table (structure, index, ...) ainsi que la liste des vues travaillant sur cette table &lt;br /&gt; - un classe d'accès à cette table qui contient les méthodes :&lt;br /&gt; &gt; ouverture() : on ouvre la table et, si elle existe, la vue en lecture/écriture qui sert à sa mise à jour&lt;br /&gt; &gt; fermeture()&lt;br /&gt; &gt; ajout() pour ajouter une ligne à la table&lt;br /&gt; &gt; modifier() pour modifier une ligne de la table&lt;br /&gt; &gt; supprimer() pour 'supprimer' une ligne de la table&lt;br /&gt; &gt; chercher() pour chercher une ligne&lt;br /&gt; &gt; nouvelle_clef() pour rechercher la clef d'un nouvel enregistrement&lt;br /&gt; et un certain nombre de propriétés qui vont servir d'interface avec l'application. En particulier la propriété 'image' contient l'image 'scatter name memo' de la ligne en cours de traitement. C'est sur elle que doit travailler l'application. La classe d'accès est générée à partir des seules informations présentes dans la base; elle doit donc être 'personnalisée' pour être adaptée à chaque table.&lt;br /&gt;&lt;br /&gt;L'utilisation d'une classe d'accès à une table a des avantages :&lt;br /&gt; - on peut coder ou décoder certains champs et ce traitement n'est fait qu'à un seul endroit&lt;br /&gt; - on peut faire évoluer la table sans entrainer trop de modifications dans l'application&lt;br /&gt; - on peut faire évoluer la méthode d'accès à la table sans toucher au reste de l'application : on peut commencer par des APPEND, SEEK, ... puis utiliser des vues puis passer la table sur une bdd externe, ...&lt;br /&gt; - on peut définir, et cela ne se fait qu'à un seul endroit pour toute l'application, la méthode de bufferisation (optimiste, pessimiste, ligne, table)&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;Le présent gendbcxm contient des particularités 'mauricienne' :&lt;br /&gt; - le nom de la vue updatable (en lecture/écriture) à utiliser pour mettre à jour la table doit se terminer par '_rw' (Read Write)&lt;br /&gt; - les paramètres des vues doivent être signalés manuellement : menu Query, option View parameters ...&lt;br /&gt; - vfpmou est une table qui contient le mouchard de l'application : c'est un fichier d'événements horodaté. Il est remplacé petit à petit par un fichier texte.&lt;br /&gt; - VFP permet de créer, visuellement, une vue dans une base de données X sur une table de la base de données Y. C'est très interessant. Gendbcxm permet de récupérer le code de création de cette vue (dans lequel le X n'apparait pas) pour l'inclure dans le programme de régénération des vues de la table dans Y.&lt;br /&gt;&lt;br /&gt;CECI EST UNE VERSION BETA. Toutes les critiques, suggestions, ... sont les bienvenues.&lt;br /&gt;&lt;br /&gt;Pour l'exemple je vous livre une petite bdd en cours de construction avec 2 tables : une contient l'ensemble des codes postaux français, l'autre la liste des pays du monde. L'une a des vues l'autre pas, du coup sa classe d'accès est beaucoup moins complète.&lt;br /&gt;&lt;br /&gt;Gendbc, Gendbcx et Gendbcxm sont des (très bons !) exemples de génération de programme par un autre programme. Les deux premiers utilisent les fonctions de bas niveau (FOPEN, FPUTS, ...) j'utilise TEXTMERGE. Chaque technique a ses avantage et ses inconvénients. Avec TEXTMERGE, il faut faire plus attention, quand on parcours le programme de gendbcxm, pour savoir si on est dans le programme générateur ou si on est dans le programme généré (entre TEXT et ENDTEXT. J'utilise aussi beaucoup les opérateurs \ et \\.&lt;br /&gt;&lt;br /&gt;NOTE : traitement_erreur_tableupdate est une procédure commune de traitement des erreurs de tableupdate. Cette procédure est en cours de développement. Elle est placée dans une librairie 'commune'&lt;br /&gt; &lt;br /&gt;NOSTALGIE : ma première 'action publique' en tant que développeur FOX a été un article sur la ... génération de programme dans la revue POINT DBF. C'était en 1992. A l'époque, FPD2.0 était livré avec FOXGEN qui était un langage de génération de programme (c'était le début des L4G) ... &lt;br /&gt;</description><author>Jean à Grenoble</author><category>21 - Outils</category><pubDate>Thu, 19 Feb 2009 01:56:37 GMT</pubDate></item><item><title>24 &amp; 25 Janvier 2009 - Caumont sur Durance</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000669</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000669</guid><description>Compte Rendu de la réunion de Comité&lt;br /&gt;des 24 &amp; 25 Janvier 2009 à Caumont sur Durance &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; Etaient présents : &lt;br /&gt; Francis Faure, &lt;br /&gt; Patrick Gilles, le samedi &lt;br /&gt; Eric Leissler, &lt;br /&gt; François Lepage, &lt;br /&gt; Michel Lévy, &lt;br /&gt; Robert Plagnard &lt;br /&gt; Emmanuel Remy &lt;br /&gt; &lt;br /&gt; 1 : Point financier du trésorier &lt;br /&gt; Eric nous fait un premier point sur les comptes d&amp;rsquo;AtoutFox à fin 2008. La situation est bonne. Les campagnes de bannières publicitaires sur le site web www.atoutfox.org avec Microsoft rapportent quelques centaines d&amp;rsquo;euros à l&amp;rsquo;association. Merci à tous de cliquer et de visiter les offres de ces bannières la plupart du temps très intéressantes. &lt;br /&gt; Ce fonds de roulement nous permet d&amp;rsquo;avancer les arrhes de réservation de l&amp;rsquo;hôtel pour les Rencontres 2009. &lt;br /&gt; &lt;br /&gt; 2 : Lancement d&amp;rsquo;une campagne d&amp;rsquo;appel à cotisation &lt;br /&gt; AtoutFox n&amp;rsquo;a jamais pris le temps de lancer des campagnes d&amp;rsquo;appel à cotisation pour inciter nos membres inscrits à devenir membre actifs. La cotisation est de 20 euros par an pour une personne physique et de 200 euros par an pour une personne morale avec jusqu&amp;rsquo;à 10 collaborateurs inscrits. Eric propose de mettre gratuitement à disposition de l&amp;rsquo;association son logiciel de gestion d&amp;rsquo;association avec automatisation des appels de cotisation par mails et PDFs. L&amp;rsquo;association va lancer courant février une campagne d&amp;rsquo;incitation à devenir membre actif. Le comité, lors de ses prochaines sessions MSN du lundi soir décide de réfléchir à une incitation de services supplémentaires pour les membres actifs lors du renouvellement de leur cotisation annuelle. &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; 3 : Possibilité de règlement en ligne par carte bancaire sur le site web pour les adhésions et les Rencontres &lt;br /&gt; Sur les conseils de Francis, notre hébergeur, il est décidé de contacter la Banque Populaire de Lorraine Champagne pour offrir la possibilité de règlement en ligne des cotisations et des inscriptions aux Rencontres par carte bancaire sur le site AtoutFox. En effet cette banque propose ce service sans frais de mise en place ni de frais d&amp;rsquo;abonnement juste avec des commissions sur les transactions effectuées évitant ainsi tout investissement préalable. &lt;br /&gt; &lt;br /&gt; 4 : Organisation des Rencontres AtoutFox 2009 &lt;br /&gt; Les Rencontres AtoutFox 2009 auront lieu du 18 au 20 Mars 2009 à l&amp;rsquo;hôtel Mercure de Roissy en France comme en 2006. &lt;br /&gt; &lt;br /&gt; Une première version du planning est la suivante : &lt;br /&gt; VFPS &amp; VFPX &lt;br /&gt; &lt;br /&gt; Guineu &amp; eTecnologia &lt;br /&gt; &lt;br /&gt; Migrations : SEEK &amp; après &lt;br /&gt; &lt;br /&gt; D'un répertoire de DBFs vers SQL Server &lt;br /&gt; &lt;br /&gt; Programmer en T-SQL dans SQL Server &lt;br /&gt; &lt;br /&gt; Silverlight 2 &amp; Flex &lt;br /&gt; &lt;br /&gt; Strataframe &lt;br /&gt; &lt;br /&gt; COM / DCOM / WebServices &lt;br /&gt; &lt;br /&gt; Visual Studio 2008 &lt;br /&gt; &lt;br /&gt; Ruby on Rails &lt;br /&gt; &lt;br /&gt; Virtualisations &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; Il est décidé d&amp;rsquo;inviter Ken Levy à venir faire une session Keynote à propos de VFPS. &lt;br /&gt; Il est décidé de demander à Microsoft d&amp;rsquo;offrir à tous les participants une version développeur de SQL Server 2008. &lt;br /&gt; &lt;br /&gt; Le prix des Rencontres 2009 sont les suivants : &lt;br /&gt; Tarifs exonéré TVA pour les inscriptions avec leur règlement reçu avant le 01/03/2009 : &lt;br /&gt; Membre actif &lt;br /&gt; Membre simple-honneur &lt;br /&gt; Autre &lt;br /&gt; &lt;br /&gt; 320,00&amp;euro; &lt;br /&gt; 370,00 &amp;euro; &lt;br /&gt; 420,00 &amp;euro; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; Tarifs exonéré TVA pour les inscriptions avec leur règlement reçu après le 28/02/2009 : &lt;br /&gt; Membre actif &lt;br /&gt; Membre simple-honneur &lt;br /&gt; Autre &lt;br /&gt; &lt;br /&gt; 370,00 &amp;euro; &lt;br /&gt; 420,00 &amp;euro; &lt;br /&gt; 470,00 &amp;euro; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; Tarifs exonéré TVA pour les inscriptions avec prise en charge Formation &lt;br /&gt; Inscription &lt;br /&gt; &lt;br /&gt; 500,00 &amp;euro; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; Tout comme en 2006, ce droit d'inscription inclut donc : &lt;br /&gt; Repas du Midi Participation à l'intégralité des sessions Documents support des sessions Accueil café-thé Pauses café-thé pendant la journée Eau minérale pendant les travaux Cadeau de bienvenue AtoutFox Il n'inclut pas : &lt;br /&gt; l'hébergement le parking Les consommations au bar ou au restaurant de l'Hôtel Mercure &lt;br /&gt; &lt;br /&gt; 5 : Défraiement des membres du Comité &lt;br /&gt; Malgré les réunions MSN du lundi soir, la tenue régulière de réunions du Comité en face à face est impérative pour faire avancer l&amp;rsquo;association. La participation à ces réunions est bien évidemment bénévole cependant, les déplacements coûtent cher et peuvent être un frein à la venue de certaines personnes qui ont envie de s&amp;rsquo;impliquer. Il est décidé de porter à l&amp;rsquo;ordre du jour de la prochaine Assemblée Générale d&amp;rsquo;AtoutFox le 20 Mars 2009 prochain, la proposition suivante : Remboursement sur demande de l&amp;rsquo;intéressé des frais de déplacement des personnes venant aux réunions du Comité d&amp;rsquo;AtoutFox sur la base d&amp;rsquo;un billet de train 2 nde classe plein tarif quel que soit le mode de déplacement finalement choisi. &lt;br /&gt;</description><author>François 37</author><category>40 - Réunions du Comité AtoutFox</category><pubDate>Wed, 04 Feb 2009 01:56:37 GMT</pubDate></item><item><title>Protéger les tables d'une base de donnée VFP 9</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000668</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000668</guid><description>Principe simple mais efficace (dans une certaine mesure) : &lt;br /&gt; - Définisser des variables mémoires ou un mot de passe crypté qui vous sont propres (à initialiser dans le module principal ou en mode commande avant d'entammer toute action sur les tables) : &lt;br /&gt; - Créer des procédures stockées qui utilisent ces variables pour éviter d'ouvrir, de supprimer ou détacher la table &lt;br /&gt; - Créer des procédures stockées pour protéger les procédures stockées elles-memes &lt;br /&gt; &lt;br /&gt; NB : Dans un envirennement réseau, il est impératif d'implémenter une stratégie de sécurité limitant les droits aux seuls utilisateurs autorisés. &lt;br /&gt; &lt;br /&gt; Voici un modèle : &lt;br /&gt; &lt;br /&gt;</description><author>dridbul</author><category>21 - Outils</category><pubDate>Sun, 25 Jan 2009 01:56:37 GMT</pubDate></item><item><title>VFPS: Visual FoxPro Stack</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000667</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000667</guid><description>Dans l'éditorial du magazine FoxRockX de janvier 2009 : Ken Levy Lance VFPS ! &lt;br /&gt; à lire : http://www.foxrockx.com/seite.htm (Rubrique Visual FoxPro Stack) &lt;br /&gt; pour les 100% Francophone voici une traduction : &lt;br /&gt; &lt;br /&gt; Magazine FoxRockX : Editorial de Janvier 2009 - www.FoxRockX.com &lt;br /&gt; Visual FoxPro Stack Les composants logiciels autour de la plateforme Visual FoxPro et de son écosystème Ken Levy &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; L'évolution et le prochain cycle de Visual FoxPro a essentiellement été transféré par Microsoft à la communauté FoxPro. Visual Foxpro va évoluer, mais le résultat de cette évolution dépendra des efforts au sein de la communauté FoxPro. VFPS (Visual FoxPro Stack) peut devenir un élément important dans l'avenir et la perception de Visual FoxPro à partir de 2009 et pour la prochaine décennie. &lt;br /&gt; Objectifs pour la communauté VFP Afin de maintenir une perception positive de FoxPro en tant que plateforme de développement, il y a, semble-t-il, quatre domaines principaux sur lesquels doivent porter les efforts : la perception, la formation, l'intégration et le support. La communauté VFP comprend des sites Web, des blogs, des MVPs, des vendeurs, des contenus, des événements et des logiciels gratuits tels que ceux inclus dans VFPX. Certains des domaines clés des objectifs de la communauté FoxPro pourraient être couverts par la création d'une dynamique autour de l'usage d'outils gratuits pour VFP, par l'amélioration de leur facilité d'installation ou de mises à jour d'outils gratuits pour VFP et par la création d'outils pour aider VFP à intégrer de nouvelles technologies. Il y a un bon nombre d'éléments composant la plate-forme et l'écosystème de VFP et qui vont de l'avant. On à tout à gagner à définir et à formellement inventorier l'ensemble des logiciels globalement disponibles. &lt;br /&gt; LAMP Stack Dans un article d'avril 1998 édité par le magazine informatique Allemand c't, l&amp;rsquo;auteur Michael Kunze invente l'acronyme LAMP. Le but de cet article était de décrire la façon dont un ensemble de logiciels libres pouvaient être une alternative viable dans un marché des logiciels commerciaux, et depuis LAMP est devenu un terme de marketing, qui augmente la popularité et la perception des logiciels libres. &lt;br /&gt; LAMP Vue d'ensemble LAMP se réfère à une solution rassemblant la pile de logiciels: Linux, Apache, MySQL et PHP (même si, PHP peut souvent être remplacé par Perl, Python ou Ruby). L'acronyme LAMP est utilisé pour définir : une infrastructure de serveur web, un modèle de programmation logicielle et un package de distribution. Il représente une solution combinant une pile de technologies. Il n'est pas nécessaire d'avoir tous les composants de LAMP installés, car ils peuvent être utilisés de façon indépendante. Voici d'autres exemples de piles de logiciels : WebObjects de Apple Inc, Java / Java EE, Grails et l'architecture Microsoft. NET. &lt;br /&gt; &lt;br /&gt; VFPS: Visual FoxPro Stack VFPS signifie Visual FoxPro Stack, un acronyme utilisé pour définir les principaux composants logiciels constituant la plate-forme Visual FoxPro et son écosystème. En point de départ, voici une liste ci-dessous des éléments qui composent VFPS: &lt;br /&gt; Visual FoxPro 9.0, Sedna et XSource, VFPX, VFPY. Sont également inclus les produits de tiers pour VFP, y compris les outils DotNet pour Visual FoxPro tels que VFP Studio, Guineu, DotNet Extender for VFP, VFPCompiler for DotNet et VFPConversion. &lt;br /&gt; Visual FoxPro 9.0 Visual FoxPro 9.0 ne sera probablement plus disponibles à la vente après 2009 sous forme de produit en boite emballée sous film plastique. VFP 9.0 restera disponible via les abonnements MSDN et peut-être par le biais de licences en volume de type "Select". Le support standard de VFP9.0 se termine en janvier 2010 et le support étendu se termine en janvier 2015. Et même si le SP2 est probablement le dernier Service Pack pour VFP 9.0, il y aura encore de nouveaux correctifs pour la sécurité et pour la compatibilité avec Windows. Il est probable qu'un correctif sera publié par Microsoft si besoin est pour Windows 7 lorsqu'il sera publié. &lt;br /&gt; Sedna et XSource Sedna est un package gratuit supplémentaire fourni par Microsoft qui inclut des outils de productivité et de l'interopérabilité. Les principaux éléments sont : My dot IntelliSense, Upsizing Wizard, Data Explorer, NET4COM, Vista Toolkit et les contrôles de DBi Tech. &lt;br /&gt; En ce qui concerne XSource il s'agit de tous les codes sources des composants inclus dans Visual FoxPro 9.0 qui sont écrits en VFP. Les licences de Sedna et XSource permettent la modification et la redistribution des changements et des améliorations et VFPX est le lieu idéal pour partager les mises à jour. &lt;br /&gt; VFPX VFPX est un effort de la communauté Visual FoxPro pour créer des compléments open source pour Visual FoxPro 9.0. Les codes, les classes et les librairies sont le résultat des travaux de la communauté pour soutenir et étendre Visual FoxPro. Tout le monde peut participer à VFPX sur des projets existants ou nouveaux et donc s'inscrire dans l'effort communautaire. &lt;br /&gt; DotNet pour Visual FoxPro Il existe plusieurs ressources et des produits mettant l'accent sur l'apprentissage de DotNet pour les développeurs VFP, l'intégration de VFP dans DotNet et la migration d'applications VFP en DotNet. Les principaux acteurs dans ce domaine : VFP Studio, Guineu, DotNet Extender for VFP, VFPCompiler for DotNet, and VFPConversion. C'est bien évidement un élément optionnel de VFPS. &lt;br /&gt; Page d'accueil de VFPS J'ai créé une nouvelle page wiki en ligne pour VFPS, reportez-vous à l'URL ci-dessous. Cette page wiki accueille les définitions et les ressources pour VFPS, comme la communauté VFP les définit (donc une page wiki) et des liens vers les différents composants, produits et projets mentionnés dans cet article. Considérez cette page wiki comme la page d'accueil de VFPS : http://fox.wikis.com/topic/VFPS &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; Histoire de VFPS VFPS est une idée inspirée par une longue conversation que j'ai eue avec Rainer Becker, un soir au cours du VFP DevCon 2008 à Francfort. Rainer et moi avons partagé le temps de présentation de la « keynote session ». Dans ma partie du discours, j'ai inclus l'état du produit VFP et de sa communauté, les tendances futures et la façon dont la communauté est le pilote à l'égard de l'avenir de VFP. J'ai également mentionné la façon dont VFPX et plusieurs produits .NET pour VFP sont indispensables à la plate-forme et à l'écosystème de VFP pour entrer dans la prochaine décennie. Rainer a repris l'ensemble de mon message et des points de mon exposé et l'a rapproché de ce qui a été fait avec LAMP. Rainer m'a demandé d'écrire cet éditorial, qui est donc la synthèse des résultats de ma présentation et de mes conversations avec des membres de la communauté. &lt;br /&gt; Avantages de VFPS La communauté VFP renforce la perception et l&amp;rsquo;image de marque de VFP en apportant un cadre de référence pour l&amp;rsquo;évolution des composants. Historiquement, PHP n'a pas été mis à jour pendant plusieurs années et sa version 5 et n'a pas été bien adoptée. Mais comme LAMP est un ensemble suivi par le public, la dernière version de PHP a bénéficié de l'image de marque et de la perception de LAMP. l n'y aura pas de VFP 10; il est d&amp;rsquo;autant plus important de se référer à VFPS en tant qu&amp;rsquo;ensemble de composants connexes à VFP, pour recentrer les points de vues et améliorer la perception du produit. Cette marque aura souvent pour cible les entreprises et les décideurs informatiques d'applications basées sur VFP. Par exemple, "Je me réjouis de la version de VFPS en 2010." Et, "je m'attends à ce que la version de VFPS en 2011 permette au développement VFP d'être beaucoup plus intégré aux autres produits et technologies." &lt;br /&gt; Appels à l'action pour VFPS La page d'accueil wiki de VFPS peut être la continuité de cet éditorial de lancement de Visual FoxPro Stack. Le premier appel à l'action est pour les développeurs VFP : consultez et modifiez la page VFPS et suivez ses évolutions, fournissez des commentaires et des discussions autour de l'évolution des composants de VFPS, contribuez à l'écosystème y compris en téléchargeant des composants sur VFPX, contribuez à VFPX et aidez à promo uvoir l&amp;rsquo;image de marque de VFPS. &lt;br /&gt; Profil de l'Auteur Ken Levy est le président et fondateur de MashupX, LLC, spécialisé dans le conseil pour les communautés bâties autour de produits et de services, les techniques de consulting marketing ciblé, la création multimédia et les techniques logicielles. Ken est un consultant pour l'EPS en tant que spécialiste de communautés et du marketing, et il est le co-animateur de CodeCast un podcast associés à Code Magazine. Avant de commencer MashupX, Ken a travaillé chez Microsoft comme chef de produit pour Visual FoxPro, puis responsable de l'équipe de la plateforme Windows Live, et enfin gestionnaire du programme communautaire VSX (Visual Studio Extensibility). Ken est un membre bien reconnu de la communauté FoxPro, il a créé GenScrnX pour FoxPro 2.x et de nombreux composants VFP y compris l'explorateur de classes. Vous trouverez le blog de Ken à http://mashupx.com/blog/ et vous pouvez aussi le à contacter par email klevy@mashupx.com . &lt;br /&gt; &lt;br /&gt; Traduction Française par Francis FAURE et son ami Google avec l'autorisation de Ken Levy et Rainer Becker / FoxRockX &lt;br /&gt; &lt;br /&gt;</description><author>Francis Faure</author><category>5.1 - Traductions</category><pubDate>Tue, 20 Jan 2009 01:56:37 GMT</pubDate></item><item><title>EXPORT ETEBAC POUR PRELEVEMENTS AUTOMATIQUE ET VIREMENTS</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000665</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000665</guid><description>Bonjour à tous &lt;br /&gt; Tout est dans le zip &lt;br /&gt; &lt;br /&gt; C'est brut par manque de temps, mais toutes les informations nécessaires à la construction de fichiers ascii permettant de faire les prélèvements automatiques et les virements y sont. &lt;br /&gt; &lt;br /&gt; Il faut accompagner le tout de listing et borderau d'envoi. &lt;br /&gt; Cette procédure fonctionne chez un client trois ans tous les mois. &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; bonne année 2009 à tous &lt;br /&gt; &lt;br /&gt;</description><author>aumeric</author><category>Import - Export</category><pubDate>Sat, 10 Jan 2009 01:56:37 GMT</pubDate></item><item><title>quelques methodes d'extension dateTime - some DateTime extension methods</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000663</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000663</guid><description>Quelques methodes d'extension dateTime - voir code pour les exemples &lt;br /&gt; &lt;br /&gt;</description><author>Gregory Adam</author><category>01 C#</category><pubDate>Mon, 29 Dec 2008 01:56:37 GMT</pubDate></item><item><title>Combinaisons (n,p)  - combinations(n, p)</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000662</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000662</guid><description>Combinaisons (n,p) super rapides (5% du temps d&amp;rsquo;un calcul normal) jusque n = 128 ou plus si vous changez la classe &lt;br /&gt; L&amp;rsquo;astuce est de construire un tableau en mémoire comme le triangle de Pascal &lt;br /&gt;voir - http://en.wikipedia.org/wiki/Pascal%27s_triangle &lt;br /&gt; &lt;br /&gt; Utilisation : &lt;br /&gt; using GregoryAdam.Base; &lt;br /&gt; Console .WriteLine( "128,5 : {0}" , MathBits .Combinations(128, 5)); &lt;br /&gt; &lt;br /&gt;</description><author>Gregory Adam</author><category>01 C#</category><pubDate>Mon, 29 Dec 2008 01:56:37 GMT</pubDate></item><item><title>Formatter la date</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000661</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000661</guid><description>Differentes facons de formatter une date dans la langue de l'utilisateur, ou toute autre langue supportee par windows &lt;br /&gt; &lt;br /&gt;</description><author>Gregory Adam</author><category>05 - API et appels systèmes</category><pubDate>Thu, 25 Dec 2008 01:56:37 GMT</pubDate></item><item><title>égalité/inégalité en .net.</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000660</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000660</guid><description>Je me suis fait un petit résumé sur l&amp;rsquo;égalité/inégalité en .net. &lt;br /&gt; Ceci est pour le débutant, mais aussi pour celui qui veut rafraîchir ses connaissances. &lt;br /&gt; Si le principe vous intéresse &amp;ndash; lisez-le &lt;br /&gt; Ce résumé est en Anglais &amp;ndash; vu que toute la doc est en Anglais &amp;ndash; et ne devrait pas être trop difficile à comprendre. S&amp;rsquo;il est difficile par contre et une bonne âme veut bien le traduire, je lui enverrai le document. &lt;br /&gt; Mon prochain résumé sera la comparaison &amp;ndash; si cela vous intéresse &amp;ndash; qu&amp;rsquo;on le me dise &lt;br /&gt; &lt;br /&gt; Bonne lecture, &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; 08/12/2008 &lt;br /&gt; Changer Complex en Rectangle &lt;br /&gt; Elimination d'un StackOverflow &lt;br /&gt;</description><author>Gregory Adam</author><category>01 C#</category><pubDate>Sun, 07 Dec 2008 01:56:37 GMT</pubDate></item><item><title>Intégrer des Winforms .Net dans Visual FoxPro (Craig Berntson)</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000656</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000656</guid><description>Intégrer des Winforms .Net dans Visual FoxPro &lt;br /&gt;Traduction d'un article de Craig Berntson sur l'Interopérabilité VFP / .Net &lt;br /&gt; &lt;br /&gt; Dans cet article, Craig Berntson nous donne bien plus que des « recettes » ; il nous explique tout d&amp;rsquo;abord pourquoi et comment fonctionne l&amp;rsquo;interopérabilité entre .Net et VFP. &lt;br /&gt; &lt;br /&gt; Le premier exercice est un « Hello World » qui nous permet de lancer un form .Net depuis VFP , le deuxième exercice nous entraine un peu plus loin : nous apprenons maintenant à transmettre des données entre .Net et VFP . Dans le troisième exercice, nous utilisons des controles ActiveX créés en .Net, et dans le dernier exercice, nous apprenons à intégrer du code XAML de WPF . &lt;br /&gt;</description><author>Michel Lévy</author><category>80 dotnet</category><pubDate>Wed, 12 Nov 2008 01:56:37 GMT</pubDate></item><item><title>créer un fichier html a partir d'une table/curseur</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000655</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000655</guid><description>Permet d'exporter une table (ouverte) ou un curseur dans un fichier html &lt;br /&gt; Moyen de mettre un message au debut et a la fin du fichier html (prologue/epilogue) &lt;br /&gt; &lt;br /&gt; Dans une classe serait meillieur - c'est a titre d'exemple &lt;br /&gt;</description><author>Gregory Adam</author><category>04 - DBF : Tables</category><pubDate>Mon, 10 Nov 2008 01:56:37 GMT</pubDate></item><item><title>saisie graphique d'un créneau horaire</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000654</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000654</guid><description>Bonjour à tous &lt;br /&gt; J'avais besoin d'un module permettant de saisir de manière graphique un créneau horaire &lt;br /&gt; l'heure de début et celle de fin sont sous la forme hh:mm:ss &lt;br /&gt; la saisie est sur 24 heures. &lt;br /&gt; le container peut être redimensionné. &lt;br /&gt; Le forumlaire recoit en paramètre une heure de début et une heure de fin au format &lt;br /&gt; "hh:mm:ss" et renvoie une chaine de caractères suivante : &lt;br /&gt; "heure de debut : 08:30:00heure de fin :15:20:00" &lt;br /&gt; tout ceci en pur fox avec les classes de bases, donc modifiable à souhait ! &lt;br /&gt; &lt;br /&gt; Bons développements à tous &lt;br /&gt; Aumeric &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;</description><author>aumeric</author><category>Temps - heures - Dates - Calendriers</category><pubDate>Thu, 06 Nov 2008 01:56:37 GMT</pubDate></item><item><title>Les methodes d'extension - extension methods</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000653</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000653</guid><description>Les méthodes d&amp;rsquo;extension &amp;ndash; ou comment rendre la vie en .Net agréable &lt;br /&gt; Les grands avantages des méthodes d&amp;rsquo;extension sont : &lt;br /&gt; - on peut étendre des classes verrouillées (sealed) &lt;br /&gt; - étendre des classes dont on n&amp;rsquo;a même pas les sources &lt;br /&gt; Un autre avantage est qu&amp;rsquo;on peut utiliser les &amp;lsquo;generics&amp;rsquo; = écrire une fois pour plusieurs types/classes . &lt;br /&gt; Si on invoque avec un type int, le JIT va le compiler pour utiliser la classe int. Si on l&amp;rsquo;utilise avec un double, la méthode sera JITted pour la classe double. Ainsi on aura la même méthode compilée en mémoire mais plusieurs fois &lt;br /&gt; &lt;br /&gt; Le Zip contient un début d&amp;rsquo;utilisation de ces méthodes d&amp;rsquo;extension &lt;br /&gt; &lt;br /&gt; 11/11/2008 &lt;br /&gt; support de null dans Between(.., ..) &lt;br /&gt; ajout de ChrTran() pour les string &lt;br /&gt;</description><author>Gregory Adam</author><category>01 C#</category><pubDate>Mon, 03 Nov 2008 01:56:37 GMT</pubDate></item><item><title>Manipulation en VFP des DOCVARIABLE de Word</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000652</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000652</guid><description>Suite à la demande de "fhc" sur le newsgroupe "microsoft.public.fr.fox" : &lt;br /&gt; &lt;br /&gt; Voici une petite contribution d'illustration de manipulation des variables de Word utilisées avec le champ DOCVARIABLE. &lt;br /&gt; &lt;br /&gt; Cordialement &lt;br /&gt; Francis FAURE &lt;br /&gt;</description><author>Francis Faure</author><category>Word</category><pubDate>Wed, 29 Oct 2008 01:56:37 GMT</pubDate></item><item><title>Iban - valider, calculer les check digit</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000651</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000651</guid><description>- Validation des numeros iban &lt;br /&gt; - calcul du checksum &lt;br /&gt; &lt;br /&gt; Voir le code &lt;br /&gt; &lt;br /&gt;</description><author>Gregory Adam</author><category>Calculs de clefs et Checksums (rib, iban, ...)</category><pubDate>Sun, 26 Oct 2008 01:56:37 GMT</pubDate></item><item><title>NAF Révision 2 (Code APE)</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000650</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000650</guid><description>Suite à une demande sur le forum... &lt;br /&gt; La table des Code APE (ou NAF), en révision 2, utilisée depuis janvier 2008 &lt;br /&gt;</description><author>manu</author><category>04 - DBF : Tables</category><pubDate>Thu, 23 Oct 2008 01:56:37 GMT</pubDate></item><item><title>Un exe compilé avec VFP : mais quelle version ?</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000649</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000649</guid><description>Bonjour, &lt;br /&gt; &lt;br /&gt; Au cours du temps, si vous avez, comme moi, sur vos disques des EXEcutable VFP (ou.DLL) compilés avec différentes version de VFP... et que vous vous voulez retrouver la bonne version... &lt;br /&gt; &lt;br /&gt; Alors cette petite fonction peut vous être utile... &lt;br /&gt; &lt;br /&gt; Cordialement &lt;br /&gt; Francis FAURE &lt;br /&gt; &lt;br /&gt; Testé avec VFP6, VFP7, VFP8, VFP9. &lt;br /&gt; (Merci de vos retours si vous avez encore un VFP5 ou même un VFP3 pour tester) &lt;br /&gt; &lt;br /&gt; PS : Merci a Robert pour son indication d'optimisation en limitant le scan a 0x3000 octets &lt;br /&gt; &lt;br /&gt;</description><author>Francis Faure</author><category>21 - Outils</category><pubDate>Mon, 20 Oct 2008 01:56:37 GMT</pubDate></item><item><title>Montant en chiffres vers montant en lettres</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000648</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000648</guid><description>Fonction Xbase qui convertit un montant en chiffres vers montant en lettres (français). &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;</description><author>dridbul</author><category>Conversions</category><pubDate>Sun, 19 Oct 2008 01:56:37 GMT</pubDate></item><item><title>Réparer une tables VF9</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000647</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000647</guid><description>Si vous n'arrivez plus à ouvrir une table sous VFP 9 et vous avez le warning suivant : &lt;br /&gt; Table "name" has become corrupted. The table will need to be repaired before using again. (Error 2091) &lt;br /&gt; IL suffit de l'ouvrir en désactivant la "validation table" &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;</description><author>dridbul</author><category>21 - Outils</category><pubDate>Sun, 19 Oct 2008 01:56:37 GMT</pubDate></item><item><title>Convertir un montant en lettres</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000646</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000646</guid><description>Convertir montant en lettres &lt;br /&gt;</description><author>dridbul</author><category>21 - Outils</category><pubDate>Sun, 19 Oct 2008 01:56:37 GMT</pubDate></item><item><title>Topological sort</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000645</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000645</guid><description>Classe qui permet de trouver un ordre d&amp;rsquo;évaluation entre des entités qui ont une dépendance entre-eux. &lt;br /&gt; Exemple : &lt;br /&gt; Si on a des vues qui sont basées sur des vues et on veut faire un Requery(&amp;lsquo;VuePrincipale&amp;rsquo;), il faut d&amp;rsquo;abord faire un requery de bas en haut de la hiérarchie &lt;br /&gt; create sql view VueC as Select * from TableX where (&amp;hellip; = ?Param) &lt;br /&gt; create sql view VueB as S elect * from VueC where (&amp;hellip; = ?Param) &lt;br /&gt; create sql view VueA as Select * from TableA where (&amp;hellip; = ?Param) &lt;br /&gt; create sql view VueTop as Select * from VueA, VueB where ( &amp;hellip;) &lt;br /&gt; Un bon ordre de requery() &lt;br /&gt; - Requery(&amp;lsquo; VueC&amp;rsquo;) &lt;br /&gt; - Requery(&amp;lsquo; VueB&amp;rsquo;) &lt;br /&gt; - Requery(&amp;lsquo; VueA&amp;rsquo;) &lt;br /&gt; - Requery(&amp;lsquo; VueTop&amp;rsquo;) &lt;br /&gt; La classe permet d&amp;rsquo;entrer les dépendances et de demander un tri &lt;br /&gt; Voir le bout de code &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;</description><author>Gregory Adam</author><category>Maths - Matrices - Algos</category><pubDate>Sat, 18 Oct 2008 01:56:37 GMT</pubDate></item><item><title>04 &amp; 05 Octobre 2008</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000644</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000644</guid><description>Compte Rendu de la réunion de Comité&lt;br /&gt;des 04 &amp; 05 Octobre 2008 à Caumont sur Durance &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; Etaient présents : &lt;br /&gt; Francis Faure, &lt;br /&gt; Patrick Gilles, &lt;br /&gt; Eric Leissler, &lt;br /&gt; François Lepage, &lt;br /&gt; Michel Lévy, &lt;br /&gt; Robert Plagnard &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; 1 : Etat de l&amp;rsquo;avancement de la traduction du livre « The Best practices in Visual FoxPro for the next 10 years » &lt;br /&gt; Il reste encore 3 chapitres à finir de traduire et la relecture des chapitres déjà traduits a été répartie. &lt;br /&gt; La date limite de remise des traductions est le 31 Décembre 2008. &lt;br /&gt; La date limite de remise des chapitres relus est fixée au 31 janvier 2009. &lt;br /&gt; Cela laissera 1 mois à Whil Hentzen pour finaliser le PDF et le mettre en ligne avant les Rencontres AtoutFox 2009. &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; 2 : Organisation de formations par AtoutFox &lt;br /&gt; Vu l&amp;rsquo;augmentation des demandes de formations auprès d&amp;rsquo;AtoutFox, le Comité décide d&amp;rsquo;organiser un sondage en ligne sur le site web pour évaluer les thèmes qui intéresseraient le plus les membres afin d&amp;rsquo;envisager l&amp;rsquo;organisation éventuelle de formations par AtoutFox. &lt;br /&gt; Thèmes MS-SQL Server : &lt;br /&gt; Installation matériel &lt;br /&gt; Paramétrage du serveur &lt;br /&gt; Sauvegardes &lt;br /&gt; Réplications &lt;br /&gt; Conception de bases de données &lt;br /&gt; Contraintes &amp; Intégrité référentielle &lt;br /&gt; Interfaçage de VFP9 avec SQL. SPT, Vues &amp; Cursor Adaptor &lt;br /&gt; Programmation en Transact-SQL &lt;br /&gt; Procédures stockées &lt;br /&gt; Fonctions &lt;br /&gt; Triggers &lt;br /&gt; Gestion des autorisations &lt;br /&gt; &lt;br /&gt; Mêmes thématiques sur d&amp;rsquo;autres Serveurs SQL : &lt;br /&gt; DB2 &lt;br /&gt; mySQL &lt;br /&gt; Oracle &lt;br /&gt; Postgres &lt;br /&gt; Sybase &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; 3 : Organisation de Rencontres AtoutFox Afrique &lt;br /&gt; Un e-mailing a été lancé début juin auprès des 613 membres du continent africain inscrits sur http://www.atoutfox.org pour les inviter à répondre au sondage en ligne sur notre site web. &lt;br /&gt; &lt;br /&gt; A ce jour, seulement 46 personnes ont répondu à ce sondage et le choix entre les trois pays proposés par défaut pour accueillir ces Rencontres AtoutFox Afrique la répartition est la suivante : &lt;br /&gt; Algérie 8 Maroc 12 Tunisie 14 &lt;br /&gt; Vu le peu de réponses et le fait qu&amp;rsquo;aucun pays proposé ne se détache du lot, le Comité décide de reporter l&amp;rsquo;organisation éventuelle de Rencontres AtoutFox Afrique à l&amp;rsquo;automne 2009 et invite cordialement tous nos amis africains francophones qui ne l&amp;rsquo;auraient pas encore fait de voter en répondant à notre sondage à http://www.atoutfox.org/afrique.asp &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; 4 : Organisation des Rencontres AtoutFox 2009 &lt;br /&gt; Les Rencontres AtoutFox 2009 auront lieu du 18 au 20 Mars 2009 à l&amp;rsquo;hôtel Mercure de Roissy en France comme en 2006. &lt;br /&gt; &lt;br /&gt; Ces Rencontres auront un fil rouge qui sera un « Challenge DevCon » à savoir qu&amp;rsquo;une analyse de besoins basique d&amp;rsquo;un client presque fictif va être rédigée et des fichiers plats fournis (extraits de Northwind) pour que les bases de données, écrans, états, documentations, tests unitaires soient le squelette des présentations effectuées et que tous les intervenants utiliseront les mêmes données afin de proposer différentes solutions partant du même "besoin" &amp;hellip; &lt;br /&gt; &lt;br /&gt; Celles-ci pourront porter par exemple sur la conception de la base de données en DBF seuls, DBF/DBC, MS SQL Server, Postgres SQL etc &amp;hellip; avec des outils tels que Visual FoxPro 9, VFPx, Silverlight 2, Air Flex, Guineu, VFP2IIS, Visual Studio de base, VS + Strataframe, Ruby on Rails, l&amp;rsquo;usage de Serveurs COM+ ou de web services VFP ou autres. &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; 5 : Prochaine Réunion du Comité &lt;br /&gt; La prochaine réunion du Comité est prévue les 24 &amp; 25 Janvier 2009 prochains à Caumont sur Durance chez Francis Faure. &lt;br /&gt;</description><author>François 37</author><category>40 - Réunions du Comité AtoutFox</category><pubDate>Tue, 14 Oct 2008 01:56:37 GMT</pubDate></item><item><title>Contributions AtoutFox</title><link>http://www.atoutfox.org/articles.asp</link><guid>http://www.atoutfox.org/articles.asp</guid><description>Contributions sur www.atoutfox.org</description><author>AtoutFox</author><category>Contributions</category><pubDate>Sat, 04 Jul 2009 01:56:37 GMT</pubDate></item></channel></rss>
