<?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>Fri, 12 Mar 2010 06:08:08 GMT</pubDate><lastBuildDate>Fri, 12 Mar 2010 06:08:08 GMT</lastBuildDate><category>Contributions</category><generator>AtoutFox VFP RSS v1.0</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>DT2TimeStamp</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000738</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000738</guid><description>C'est une convertion du format DateTime au format TimeStamp que l'on retrouve généralement comme identifiant unique dans les fichiers scx, frx, vcx et autres dans Vfp&lt;br /&gt;&lt;br /&gt;Merci Gregory de m'avoir fournit cette source qui fait la convertion TimeStamp à DateTime&lt;br /&gt;&lt;br /&gt; http://blogs.msdn.com/calvin_hsia/archive/2005/01/21/358339.aspx</description><author>eddymaue</author><category>Conversions</category><pubDate>Sat, 30 Jan 2010 06:08:08 GMT</pubDate></item><item><title>EuroCompta32 comptabilité générale</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000737</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000737</guid><description>Je publie les sources d'une comptabilité générale (EuroCompta32 diffusée depuis plus de 10 ans). &lt;br /&gt; &lt;br /&gt; Il faut VFP 9 SP2, &lt;br /&gt; Et aussi XFRX (facilement adaptable au cas ou). &lt;br /&gt; &lt;br /&gt; Un fichier CHM à jour (avec les sources est livré). &lt;br /&gt; &lt;br /&gt; En espérant que ce projet puisse servir, &lt;br /&gt; &lt;br /&gt; Pour plus de détails: &lt;br /&gt; http://www.diese-consulting.fr/EuroCompta.htm &lt;br /&gt;</description><author>MIRVILLE</author><category>01 - PRG : Programmation</category><pubDate>Fri, 29 Jan 2010 06:08:08 GMT</pubDate></item><item><title>Comment envoyer un message SMS sans modem.</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000734</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000734</guid><description>La technique est très simple, la plupart des fournisseurs de téléphone mobile (cellulaire) assignent une adresse courriel à votre numéro de téléphone pour les messages SMS. (ex: 5145551212@fido.ca), donc il est possible d'envoyer un message SMS vers un téléphone mobile avec Outlook ou Outlook Express ou tout autre méthode d'automation pour envoyer des courriels. &lt;br /&gt; Vous trouver plusieurs articles sur Atoutfox pour automatiser des courriels. En voici quelques uns: http://www.atoutfox.org/articles.asp?ACTION=FCONSULTER&amp;ID=0000000047 &lt;br /&gt; Il s'agit seulement de connaitre le fournisseur du téléphone mobile que vous voulez rejoindre. &lt;br /&gt;</description><author>Mike Gagnon</author><category>09 - Automation</category><pubDate>Sat, 02 Jan 2010 06:08:08 GMT</pubDate></item><item><title>Fetch progressif avec les délégués et StrataFrame</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000733</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000733</guid><description>à propos de Les Pinter À propos de l'auteur. &lt;br /&gt; Les Pinter a commencé à travailler comme consultant pour des compagnies pétrolières locales à Houston (Texas), pendant qu'il préparait son PhD en économie à l'université de Rice. &lt;br /&gt; La programmation prit rapidement plus d'importance que l'enseignement, et sa société commença à se développer. En 1979, Les s'associa avec deux amis (Mike Griffin et Bill Rading) pour développer le « Magic Wand », le quatrième traitement de texte qui ait été écrit pour fonctionner sous le système d'exploitation CP/M. En septembre 1980, Les reçoit un coup de téléphone d'un jeune de 23 ans, un certain Bill Gates ; il rencontre le fondateur de Microsoft le lendemain, et il lui vent le code source de ce qui allait devenir Microsoft Word. &lt;br /&gt; Les Pinter abandonne rapidement les gros systèmes, et devient un des meilleurs experts des USA sur Lotus 1-2-3 ; il publie « The real Estate Guide », le premier add-on pour 1-2-3. Il travaille ensuite sur le premier dBase, puis sur FoxBase. Au moment où Microsoft achète Fox Software, Les Pinter éditait une revue mensuelle, la « Pinter FoxPro Letter », qui a duré 10 ans. &lt;br /&gt; Les Pinter a été nommé MVP VFP. il a écrit un livre sur la migration de FoxPro à .NET, et a été nommé MVP VB.NET. Depuis cet ouvrage, la conversion d'applications FoxPro en .Net est l'activité principale de Pinter Consulting (plus de 800 programmes convertis). &lt;br /&gt; Son domaine de haute compétence intègre WPF et Silverlight, Crystal Reports, SQL Reporting Services, et le développement pour mobiles. Il siège au comité technique de StrataFrame, de IdeaBlade, et de GeneXus. &lt;br /&gt; &lt;br /&gt;</description><author>Michel Lévy</author><category>03 - Strataframe</category><pubDate>Tue, 29 Dec 2009 06:08:08 GMT</pubDate></item><item><title>Créer un report rdlc avec Visual Studio 2008 et StrataFrame</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000732</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000732</guid><description>Visual Studio propose 2 outils de création de Report. &lt;br /&gt; Dans cet article, nous étudierons pas à pas l'utilisation du plus simple (les rapports de type rdlc) en nous appuyant sur StrataFrame pour accéder aux données. &lt;br /&gt; &lt;br /&gt;</description><author>Michel Lévy</author><category>03 - Strataframe</category><pubDate>Mon, 28 Dec 2009 06:08:08 GMT</pubDate></item><item><title>Ken Levy / FoxRockX "La stratégie de Microsoft concernant Visual FoxPro"</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000731</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000731</guid><description>Traduction Française par Francis FAURE 12/2009 de l&amp;rsquo;éditorial de Ken Levy du magazine « FoxRockX » de novembre 2009. &lt;br /&gt; Avec l'autorisation de Ken Levy et Rainer Becker. http://www.foxrockx.com/seite.htm &lt;br /&gt; &lt;br /&gt; La stratégie de Microsoft concernant Visual FoxPro Aperçu historique des 15 années d&amp;rsquo;évolution de Visual FoxPro et de sa stratégie chez Microsoft Ken Levy &lt;br /&gt; &lt;br /&gt; Microsoft ne publiera jamais le code source de VFP en open source car il n&amp;rsquo;y a aucune raison économique pour le faire et de nombreuses raisons pour ne pas le faire. L&amp;rsquo;évolution de VFP dans la prochaine décennie se fera avec des produits nouveaux ou améliorés qui fonctionnent avec VFP, des projets communautaires comme VFPX, et bien sûr par la communauté VFP elle-même. &lt;br /&gt; La stratégie initiale de Microsoft pour FoxPro L&amp;rsquo;achat de Fox Software pour 173 million de dollars en 1992 était très stratégique pour Microsoft, cela a été le plus gros rachat d&amp;rsquo;entreprise que Microsoft ait fait jusqu&amp;rsquo;alors. dBase de Aston-Tate était encore populaire, Borland avait Paradox, et il y avait PowerBuilder qui était le roi des applications client/server. Microsoft attendait trois choses dans le rachat de Fox Software : l&amp;rsquo;équipe de développement de Fox, la technologie de Fox, et la part de marché de la clientèle FoxPro/FoxBase. Microsoft venait juste de commencer à travailler sur Access, c&amp;rsquo;était cibler des utilisateurs de plus de puissance, même s&amp;rsquo;il y avait des chevauchements. Visual Basic en était à ses débuts. &lt;br /&gt; Il y avait une estimation de 500 000 développeurs FoxPro à son apogée autour de l&amp;rsquo;année 1995, et des millions d&amp;rsquo;ordinateurs utilisant des applications FoxPro (avec DOS ou Windows). Il a fallu près de 4 ans, et pas avant VFP 5.0, pour que Microsoft concentre d&amp;rsquo;avantage sa stratégie autour de VB et moins pour VFP. Naturellement, la base clientèle VFP et le nombre des ventes sont passés de croissants à décroissants ; comme le dit le proverbe dans le monde des affaires : il faut grandir ou mourir . &lt;br /&gt; Les premières années après l&amp;rsquo;acquisition de Fox Software, Microsoft a déployé un effort énorme et beaucoup de ressources dans la création de VFP 3.0. Il y avait environ 50 personnes dans l&amp;rsquo;équipe de développement de Fox avec un budget marketing important. Les années suivantes, à la fois Access et VB ont gagné des parts de marché et également concurrencé le marché de VFP (et sa communication), et au moment où VFP 5.0 est sorti, nombre de haut gestionnaires Microsoft voulaient mettre fin à VFP à ce moment-là. &lt;br /&gt; En fait, ils l&amp;rsquo;ont fait pour une courte période. J&amp;rsquo;étais là, dans une réunion de 40 personnes, où l&amp;rsquo;annonce officielle a été faite à l&amp;rsquo;équipe de développement de Fox que VFP était mort. C&amp;rsquo;était en tout début de 1996, et cette réunion a été relayée par le rapport du Gartner Group sur l&amp;rsquo;annonce de l&amp;rsquo;enterrement de VFP, cela a eu un impact majeur sur les ventes ultérieures de VFP. Mais les membres de l&amp;rsquo;équipe de développement et sa communauté faisait tant de bruit, également avec des personnages comme Eric Rudder (architecte de VFP 3.0, qui devient l&amp;rsquo;assistant technique de Bill Gates), qu&amp;rsquo;ils ont convaincu les gestionnaires des outils de développement qu&amp;rsquo;il était possible de maintenir VFP et le faire évoluer tout en diminuant ses ressources. En fait, la raison principale pour laquelle VFP a duré une dizaine années de plus, avec 4 versions successives, tenait d&amp;rsquo;avantage aux ventes de Windows qu&amp;rsquo;à celles de VFP. Car il y a beaucoup de machines sous Windows qui utilisent des applications VFP. Quand Steve Balmer lance à corps et à cris « développeurs, développeurs, développeurs », il pense plus aux ventes de Windows qu&amp;rsquo;aux ventes d&amp;rsquo;outils de développement. &lt;br /&gt; L&amp;rsquo;histoire de Visual FoxPro chez Microsoft Pour chaque nouvelle version de VFP comme 6.0 et 7.0, il y avait moins de ressources, moins de membres dans l&amp;rsquo;équipe, et moins de budget marketing. Lorsque VFP a été inclus dans la boîte Visual Studio, c&amp;rsquo;était juste un paquetage et non une intégration. Quand la communauté VFP a vue que VFP était dans le Visual Studio et a envisagé la possibilité de fonctionner dans le cadre du Framework .NET, ils ont aussi compris que si VFP prenait cette voie, cela risquait sérieusement de briser la compatibilité ascendante des programmes FoxPro et de remettre en cause son interface de développement. &lt;br /&gt; Microsoft n&amp;rsquo;a jamais eu comme but de travailler à la fois sur VFP et sur un VFP pour .NET. Produire un nouveau VFP pour .NET aurait enlevé des ressources utilisées pour faire évoluer VB.NET et C#, et rendu plus difficiles les ventes de Visual Studio et du framework .NET, et cela pour un résultat ne garantissant pas de faire fonctionner de vieilles applications VFP telles quelles. &lt;br /&gt; Ensuite, après VFP 7.0, il a été décidé de garder VFP comme un produit autonome en dehors de la solution Visual Studio, car il ne faisait pas partie de la plateforme .NET. Cela avait un sens, et a permis à VFP d&amp;rsquo;avoir son propre scénario de nouvelles versions. Pour toutes les nouvelles versions lancées ensuite, il était prévu que ce soit la dernière. Personne dans l&amp;rsquo;équipe de développement de Fox, pas une seule personne ne s&amp;rsquo;attendait à ce qu&amp;rsquo;une version après la VFP 8.0 puisse être produite. &lt;br /&gt; Les ventes ont continuées à diminuer chaque année, tout comme le budget marketing. La seule façon d&amp;rsquo;accroitre les ventes de VFP aurait été d&amp;rsquo;être en compétition avec Visual Studio et de prendre sur les budgets et ressources de Visual Studio. En réalité, le plus gros concurrent de VFP, c&amp;rsquo;est Visual Studio (et non Delphi ou tout autre produit non Microsoft). La plupart des gens du marketing et les gestionnaires chez Microsoft aurait préférés que les développeurs Fox utilisent Delphi.NET de Borland plutôt que Microsoft VFP, car ils auraient été utilisateurs de la plateforme .NET plutôt que du vieil héritage de COM. COM est devenu un ennemi, dont il fallait éloigner les gens, tout comme le HTML/JavaScript est également un ennemi aujourd&amp;rsquo;hui pour la plateforme Microsoft. &lt;br /&gt; Pour VFP 9.0, il n&amp;rsquo;y avait que 8 personnes dans l&amp;rsquo;équipe de développement, alors même que, VFP 9.0 était une meilleure version que VFP 7.0 et VFP 8.0 d&amp;rsquo;après la communauté unanime. Peu de temps après la sortie de VFP9, Microsoft a décidé de créer et d&amp;rsquo;offrir un complément Xbase en vue de maintenir les ventes de mise à jour et d&amp;rsquo;améliorer l&amp;rsquo;image de VFP. Cela a été le plan Sedna, un ensemble d&amp;rsquo;applications, d&amp;rsquo;utilitaires et d&amp;rsquo;exemples simples en téléchargements qui sont orientés vers l&amp;rsquo;interfaçage avec d&amp;rsquo;autres produits Microsoft (.NET, SQL Server, Office, Windows, etc.). L&amp;rsquo;autre raison d&amp;rsquo;être de Sedna a été de retarder l&amp;rsquo;annonce de la fin de VFP, pour sauvegarder les ventes de VFP 9.0 autant que possible mais aussi de protéger la communauté FOX et ses développeurs sur le marché du travail. &lt;br /&gt; &lt;br /&gt; Le code source de Visual FoxPro ne sera pas versé dans le domaine public La demande à Microsoft pour qu&amp;rsquo;il donne le code source de Visual FoxPro au domaine public est courante (et logique). Voilà en gros pourquoi Microsoft ne communiquera jamais le code source de Visual FoxPro. Il y a dans VFP de la technologie, comme Rushmore optimisant les indexations, qui est utilisée dans d&amp;rsquo;autre produit Microsoft comme SQL Server et Access. Ce n&amp;rsquo;est pas le même codage C/C++, mais les techniques et les algorithmes proviennent originellement de VFP. &lt;br /&gt; Microsoft considère cette propriété intellectuelle comme un actif Microsoft et ne veut pas le publier. &lt;br /&gt; Mais les deux plus importantes raisons n&amp;rsquo;ont rien avec les raisons ci-dessus. Elles ont rapport avec le business. Microsoft n&amp;rsquo;est plus axée sur les ventes de VFP, elle est centrée sur les ventes de Visual Studio et l&amp;rsquo;adoption de sa plateforme globale (ensemble de produits et services). Verser le code source de VFP en domaine public se traduirait par moins de développeurs VFP utilisant l&amp;rsquo;actuelle (moderne) plateforme de produits Microsoft, mais pourrait également aussi permettre à une personne ou à une entreprise de créer un produit compétitif contre Microsoft lui-même. Microsoft ne voudrait pas avoir son code utilisé pour un produit concurrent ou un nouveau produit qui interfère dans avec ses ventes de Visual Studio ou dans l&amp;rsquo;adoption de la plateforme .NET. &lt;br /&gt; La stratégie finale de Visual FoxPro chez Microsoft Au cours des 5 dernières années de Visual Foxpro chez Microsoft, alors que j&amp;rsquo;étais chef de produit (marketing / communauté) pour VFP, la stratégie était de commercialiser VFP à la communauté existante (principalement via les mises à jours), et de faire tout ce qui était possible pour maintenir une forte communauté Fox, et de faire en sorte que les développeurs VFP adoptent d&amp;rsquo;autres produits Microsoft (.NET and SQL Server). &lt;br /&gt; J&amp;rsquo;ai toujours considéré que mon rôle avait deux faces : l&amp;rsquo;une en tant que représentant de Microsoft comme salarié, et l&amp;rsquo;autre en tant que membre de la communauté FoxPro pour faire tout mon possible pour Fox à l&amp;rsquo;intérieur des murs de Microsoft pour le faire évoluer, le sauvegarder, le promouvoir et aider VFP et sa communauté autant que possible. J&amp;rsquo;ai passé presque la moitié de mon temps à « vendre » VFP au sein même de Microsoft, au siège à Redmond et dans ses bureaux externes, mais aussi à communiquer pour faire passer le message positif d&amp;rsquo;un VFP vivant. &lt;br /&gt; Les gestionnaires chez Microsoft sont au dessus de l&amp;rsquo;équipe de développement du cour de Fox, ils sont les décideurs pour tout ce qui est lié à la stratégie de VFP. Personne dans l&amp;rsquo;équipe de développement du cour de Fox n&amp;rsquo;avait la capacité de décision concernant les budgets de marketing ou des ressources pour les équipes, ou pour ce qui suivait la livraison de chaque version. Il y avait quelques personnes clés dans l&amp;rsquo;équipe qui, travaillant ensemble, ont sans doute prolongée la vie de VFP de plusieurs années par au moins une version supplémentaire. &lt;br /&gt; Je pense que la fidélité des clients a été un autre facteur dans la durée de vie prolongée de VFP au delà de la version 6.0. &lt;br /&gt; Mais au moment où VFP 9.0 a été lancé, le montant des ventes de toutes les versions de VFP confondues pour une année étaient inférieur au chiffre d&amp;rsquo;affaire d&amp;rsquo;une seule journée de Visual Studio. &lt;br /&gt; &lt;br /&gt; Le coût d&amp;rsquo;évolution de VFP relatif au chiffre généré (le retour sur investissement &amp;ndash; le ROI) était de loin bien moindre à celui de mettre des ressources sur Visual Studio et les langages .NET. De plus, certains membres de l&amp;rsquo;équipe de développement étaient prêts à aller de l&amp;rsquo;avant ou à quitter Microsoft, et il était presque impossible de trouver des gens qualifiés pour les remplacer. &lt;br /&gt; Cela aide à tout mettre en perspective si vous pensez à Visual Studio comme le produit concurrent de VFP, même s&amp;rsquo;il était détenu par la même société. Rappelez-vous quand Apple a travaillé sur les ordinateurs Mac et Lisa en même temps, un seul a survécu. Dans le cas de VFP, il a survécu une décennie entière après avoir été tué pour l&amp;rsquo;essentiel (il n&amp;rsquo;est de ce fait plus stratégique). &lt;br /&gt; Dans la prochaine décennie Le 15 janvier 2010, le support standard de VFP 9.0 prendra fin. Bien que le support payant étendu doive exister pendant 5 ans de plus, je ne m&amp;rsquo;attends pas à des correctifs logiciels supplémentaires (hotfixes) ou à ce que quoique ce soit d&amp;rsquo;autre soit fait pour VFP, sauf dans le cas improbable impactant le runtime de VFP pour Windows 7 empêchant aux clients ayant des applications VFP de migrer sur la dernière version de Windows. &lt;br /&gt; On peut considérer que Microsoft a tué VFP avant que ça ne soit vraiment nécessaire, mais on peut avoir un point de vue historique et voir que VFP a vécu de très nombreuses années et eu plusieurs versions bien au-delà de ce qu&amp;rsquo;il était prévu. &lt;br /&gt; Bien que Microsoft aurait pu faire d&amp;rsquo;avantage pour VFP, cela ne pouvait pas réellement se faire simultanément avec la promotion de Microsoft et les ressources nécessaires pour ses produits Access, VB et Visual Studio. &lt;br /&gt; Seuls les développeurs qui ont utilisés FoxPro l&amp;rsquo;apprécient vraiment pour ce qu&amp;rsquo;il est et pour ce qu&amp;rsquo;il est encore. &lt;br /&gt; &lt;br /&gt; 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ées, la création multimédia et les techniques logicielles. Ken 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 Ken sur twitter @KenLevy, sur son blog à http://mashupx.com/blog/ et vous pouvez aussi le à contacter par email klevy@mashupx.com . &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; Texte original de l&amp;rsquo;éditorial de Ken Levy du magazine « FoxRockX » 11/2009 &lt;br /&gt; &lt;br /&gt; Visual FoxPro Strategy at Microsoft Historical overview of the 15 year evolution and strategy of Visual FoxPro at Microsoft Ken Levy &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; Microsoft will never release VFP source code into open source because there is no business reason to do so and a list of reasons not to. The evolution of VFP goes on into the next decade with new and enhanced products that work with VFP, community projects such as VFPX, and of course the VFP community itself. &lt;br /&gt; Microsoft&amp;rsquo;s Early FoxPro Strategy The purchase of Fox Software for $173 million in 1992 was very strategic for Microsoft, and was the biggest corporate purchase Microsoft had ever made up until that time. Aston-Tate's dBase was still popular, Borland had Paradox, and there was PowerBuilder as the king of client/server tools. Microsoft needed three things from the Fox Software deal - the Fox developer team, the Fox technology, and the customer market share of FoxPro/FoxBase. Microsoft was just starting work on Access and it was more targeting power users, but there was still some overlap. Visual Basic was still in its early days. &lt;br /&gt; There was an estimated 500,000 FoxPro developers at the peak around 1995, and millions of computers with FoxPro apps running (either DOS or Windows based). It took almost 4 years, not until after VFP 5.0, for Microsoft to focus more strategy around VB and less for VFP. Basically, the VFP customer base and sales went from increasing to decreasing, as the saying goes in business: if you aren't growing, you&amp;rsquo;re dying . &lt;br /&gt; In the initial years after the Fox Software merger, Microsoft put a huge effort and lots of resources into creating VFP 3.0. There were about 50 people on the Fox team with a big marketing budget. In the following years, both Access and VB grew in market share and also competed in ways with the VFP market (and messaging), and by the time VFP 5.0 was released, many upper managers wanted Microsoft to just end VFP there. In fact, they did for a short time. I was there, in a meeting with 40 people, and the formal announcement was made to the Fox team that VFP was dead. It was very early 1996, and that meeting lead to the Gartner Group releasing their report that VFP was dead, which had a major impact on future VFP sales. But the Fox team members along with the community made so much noise, combined with people like Eric Rudder (architect of VFP 3.0, who became Bill Gates' technical assistant), who convinced developer tools management to keep VFP evolving while decreasing the resources. In fact, the primary reason VFP lasted another decade with 4 more versions released was more about Windows sales than VFP sales. There are many Windows machines running VFP apps. When Steve Ballmer jumps around like monkey boy and yells "developers, developers, developers", he's thinking about selling Windows more than sales of developer tools. &lt;br /&gt; History of Visual FoxPro at Microsoft For each new version of VFP like 6.0 and 7.0, there were less resources, team members, and marketing budget. When VFP was included the Visual Studio box, it was just a bundle, no integration. When the VFP community saw VFP running inside Visual Studio and the possibility of running on the .NET framework, they also learned that if VFP went that path, it would seriously break FoxPro code backward compatibility and the VFP IDE would be gone eventually. Microsoft never had a goal to work on both VFP stand-alone and VFP for .NET. Having a new VFP for .NET would just take away resources from evolving VB.NET and C#, make it harder to sell Visual Studio and the .NET framework, and not really result in anything useful since it would not run old VFP code as-is. &lt;br /&gt; Then after VFP 7.0, it was decided to keep VFP as a stand-alone product outside of the Visual Studio bundle, since it would not be part of the .NET platform. This made sense, and allowed VFP to ship on its own new version timeline. Each new version released, it was expected that was the last version. Nobody on the Fox team, not a single person, expected a version after VFP 8.0 released. Sales continued to decline annually, and so did the marketing budget. The only way to grow/increase sales of VFP would have been to compete with Visual Studio and take away budget and resources from Visual Studio. In reality, the biggest competitor to VFP was Visual Studio (not Delphi or any non-Microsoft product). Most marketing and management folks at Microsoft would have preferred Fox developers use Borland's Delphi.NET rather than Microsoft VFP, since they would be building on the .NET platform rather than the old legacy COM. COM became the enemy, to move people away from it, just like HTML/JavaScript is a current enemy to the Microsoft platform today as well. &lt;br /&gt; For VFP 9.0, there were only about 8 people on the Fox team, and even so, VFP 9.0 was a better release than VFP 7.0 and VFP 8.0 according to the community. Soon after VFP 9.0 released, Microsoft decided to create an Xbase add-on to give away in order to maintain initial upgrade sales and an upbeat perception of VFP. The result was a plan for Sedna, a download of useful sample apps and utilities that focused on VFP interop with other Microsoft products (.NET, SQL Server, Office, Windows, etc.). The other reason for Sedna was to delay the announcement of the end of VFP in order to save sales of VFP 9.0 as well as to protect the Fox community and the job market for VFP developers. &lt;br /&gt; No Open Source of Visual FoxPro The request for Microsoft to make the Visual FoxPro code base open source is a common (and logical) one. Here is some insight to why Microsoft will never release Visual FoxPro source code into open source. There is technology in VFP, like Rushmore optimized indexing, that is used in other Microsoft products SQL Server and Access. It&amp;rsquo;s not the same C/C++ codebase, but many techniques and algorithms originated from VFP. Microsoft considers this intellectual property, an asset Microsoft does not want to be released. &lt;br /&gt; But the two more significant reasons have nothing to do with the reason above. They have to do with business. While Microsoft is not focused on sales of VFP, it is focused on sales of Visual Studio and adoption of the overall Microsoft platform (stack of products and services). Releasing VFP into open source would result in less VFP developers using the current (modern) Microsoft platform of products, but may also result in someone or some company creating a competitive product against Microsoft. Microsoft would not want to see the code used to enhance a competitive product nor would they want to see a new product created that interferes with Visual Studio sales or .NET platform adoption. &lt;br /&gt; The Final Strategy of Visual FoxPro at Microsoft In the final 5 years of Visual FoxPro at Microsoft, while I was the last Product Manager (marketing/community) for VFP, the strategy was to market VFP to the existing community (mainly via upgrades), to do what was possible to keep the Fox community as strong, and to get VFP developers to adopt additional Microsoft products (.NET and SQL Server). In my role, I always viewed myself in 2 positions - one representing Microsoft as an employee, and the other as a FoxPro community member doing everything I could for Fox within the walls of Microsoft to evolve, save, promote, and help VFP and the community as much as possible. I spent nearly half of my time marketing VFP within Microsoft, at the Redmond headquarters and to the field offices, on messaging and keeping the VFP message positive/alive. &lt;br /&gt; Management at Microsoft above the core Fox team were the decision makers for things related to VFP strategy. Nobody on the core Fox team had decision making ability around marketing budget or resources for the team, or what was done after each version shipped. There were a few key people on the team who, working together, probably extended the life of VFP an least one additional version and several years. &lt;br /&gt; I think the customer base loyalty was yet another factor in how long VFP was extended beyond 6.0. But by the time VFP 9.0 was released, the amount of sales for all versions of VFP combined annually was less revenue than Microsoft sales of Visual Studio in only one day. The cost to evolve VFP relative to the amount of money it generated (ROI) was far less than putting more resources into Visual Studio and .NET languages. Plus, some Fox team members were ready to move on or leave Microsoft, and it was nearly impossible to find qualified people to replace them. It helps to put this all into perspective if you think of Visual Studio as a competitive product to VFP, even though it was owned by the same company. Remember when Apple worked on both the Mac and the Lisa computers at the same time, only one survived. In the case of VFP, it survived an entire decade after it was essentially killed (by it no longer being strategic). &lt;br /&gt; Into the Next Decade On January 15th, 2010, VFP 9.0 standard support ends. While paid extended support will exist for 5 more years, I don't expect any additional hotfixes or anything to be done for VFP, unless in the rare case it impacted VFP runtime on Windows 7 preventing customers with VFP based apps to upgrade to the latest version of Windows. Some suggest that Microsoft killed VFP before it should have, and another way to look at the behind the scenes history is to see that VFP lived many years and versions beyond what it was planned. While Microsoft could have done more for VFP, it just really couldn't happen with Microsoft promoting and giving resources to Access, VB, and then Visual Studio at the same time. Only developers who have used FoxPro really appreciate it for what it was and what it still is. &lt;br /&gt; &lt;br /&gt; Ken Levy is the president and founder of MashupX, LLC, specializing in consulting for community building around products and services, guerilla marketing techniques, multimedia creation, and software technology. Ken is the co-host of CodeCast, a podcast show associated with CODE Magazine. Prior to starting MashupX, Ken worked at Microsoft as the product manager for Visual FoxPro, a product planner on the Windows Live Platform team, and the community program manager for VSX (Visual Studio Extensibility). Ken is a long time recognized member of the FoxPro community, created GenScrnX for FoxPro 2.x, and many VFP components including the Class Browser. You can find Ken on Twitter @KenLevy, Ken&amp;rsquo;s blog at http://mashupx.com/blog, or contact Ken at klevy@mashupx.com. &lt;br /&gt; &lt;br /&gt;</description><author>Francis Faure</author><category>5.1 - Traductions</category><pubDate>Fri, 25 Dec 2009 06:08:08 GMT</pubDate></item><item><title>Utiliser PDFCreator silencieusement (sans nommer le fichier PDF)</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000729</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000729</guid><description>Voici un bout de code pour utiliser PDFCreator sans avoir besoin de nommer le fichier PDF. Le code aussi detruit PDFCreator à chaque utilisation sinon cela peut causer un problème.</description><author>Mike Gagnon</author><category>03 - FRX : Etat, impression, Report</category><pubDate>Wed, 09 Dec 2009 06:08:08 GMT</pubDate></item><item><title>Gérer les accès concurrentiels avec StrataFrame</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000727</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000727</guid><description>Quelles sont les possibilités offertes par StrataFrame pour nous permettre de choisir notre mode de gestion des accès concurrentiels aux données? Quels équivalents du WHERETYPE de VFP ce framework nous propose-t-il? &lt;br /&gt;</description><author>Michel Lévy</author><category>03 - Strataframe</category><pubDate>Fri, 27 Nov 2009 06:08:08 GMT</pubDate></item><item><title>Getfile() : Récupérer le nom exact sur disque avec FSO</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000726</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000726</guid><description>Bonjour, &lt;br /&gt; Je vous propose une petite contribution pour répondre à une question en newsgroup: &lt;br /&gt; Getfile() retourne le chemin et le fichier en majuscules, &lt;br /&gt; Ci-après le moyen de récupérer le chemin et nom exact sur disque avec FSO. &lt;br /&gt; Cordialement &lt;br /&gt; Francis FAURE &lt;br /&gt;</description><author>Francis Faure</author><category>01 - PRG : Programmation</category><pubDate>Tue, 10 Nov 2009 06:08:08 GMT</pubDate></item><item><title>Environnement de développement VFP9 sous Windows Vista, et Windows 7 - Problème Aéro.</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000725</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000725</guid><description>En son temps, lors d&amp;rsquo;une installation d&amp;rsquo;un poste de développement Microsoft Visual Foxpro [par défaut] sur Microsoft Windows Vista [installé par défaut] : on a constaté que les déplacements des fenêtres de l&amp;rsquo;IDE sont : lents, saccadés et imprécis. &lt;br /&gt; Les fenêtres fonctionnent, mais cela est particulièrement visible et pénible sur la fenêtre de « Commandes ». &lt;br /&gt; &lt;br /&gt; On s&amp;rsquo;est aperçu qu&amp;rsquo;en désactivant la fonction « Dockable » : il n&amp;rsquo;y a plus ce problème. &lt;br /&gt; &lt;br /&gt; Après un peu de temps, l&amp;rsquo;explication a été fournie : Windows Vista a introduit le mode « Aéro » et ce mode &amp;lsquo;Aéro&amp;rsquo; pose problème sur les fenêtres qui sont « Dockables » ET qui ont un titre « HalfHeight ». &lt;br /&gt; &lt;br /&gt; Ce n&amp;rsquo;est pas un problème purement Visual Foxpro puisque les applications utilisant des fenêtres « HalfHeight » + « Dockable » ont eu le même problème. &lt;br /&gt; Dans le Visual Foxpro l&amp;rsquo;impact est uniquement sur l&amp;rsquo;IDE. (Fenêtres de commandes, projets, propriétés, sessions&amp;hellip;) &lt;br /&gt; &lt;br /&gt; En solutions : &lt;br /&gt; &lt;br /&gt; a) La première a été évoquée ci-avant : il suffit de ne pas « docker » les fenêtres. &lt;br /&gt;(Cela n&amp;rsquo;est pas possible pour le gestionnaire de projet) &lt;br /&gt; &lt;br /&gt; b) Désactiver le mode « Aéro ». &lt;br /&gt;Finalement le mode Aéro (que l&amp;rsquo;on peut résumer fonctionnellement à la transparence des fenêtres) : est-il réellement indispensable sur une machine de développement ?&lt;br /&gt;(Surtout que c&amp;rsquo;est un bouffe CPU et mémoire sous Vista) &lt;br /&gt; &lt;br /&gt; c) Simplement désactiver le mode « Aéro » uniquement lorsque l&amp;rsquo;on est dans l&amp;rsquo;environnement de développement VFP. &lt;br /&gt; &lt;br /&gt; En complément : on peut raisonnablement penser que la modification des fenêtres de l&amp;rsquo;IDE de VFP ne sera jamais modifiée par les développeurs Microsoft, puisque la « fox team » n&amp;rsquo;existe plus, et que pour la sortie du SP2 qui gérait les problèmes « Vista » ce problème a été répertorié mais classé non prioritaire puisque cela n&amp;rsquo;impact que l&amp;rsquo;IDE. Puis finalement abandonné par la team faute de temps. &lt;br /&gt; &lt;br /&gt; Avec la commercialisation récente de Windows 7, bon nombre de questions similaires à ce sujet arrivent à nouveaux dans les forums. &lt;br /&gt; En fait les causes et les solutions sont les mêmes&amp;hellip; &lt;br /&gt; &lt;br /&gt; La version Windows 7 béta de fin décembre 2008: le mode « Aéro » n&amp;rsquo;était pas activé par défaut : du coup le problème ne se posait plus. &lt;br /&gt; La version commerciale de Win7 active le mode « Aéro » par défaut. &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; Pour en revenir aux solutions : &lt;br /&gt; http://www.atoutfox.org/modules/articles/mht/0000000725.mht &lt;br /&gt; &lt;br /&gt;</description><author>Francis Faure</author><category>20 - Trucs et Astuces</category><pubDate>Sat, 07 Nov 2009 06:08:08 GMT</pubDate></item><item><title>Classe générique d'automation Word</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000723</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000723</guid><description>Facilite l'automation de Word&lt;br /&gt;Donne la main à l'utilisateur pour modifier un document et reprend la main quand il a terminé &lt;br /&gt;Convertit un document Word dans un autre format &lt;br /&gt;Ferme automatiquement les documents ouverts et Word &lt;br /&gt; &lt;br /&gt; Peut donner des idées pour aller plus loin dans l'automation de Word avec VFP &lt;br /&gt; &lt;br /&gt; Nécessite VFP &gt;= 8 &lt;br /&gt;</description><author>zenbuyer</author><category>Word</category><pubDate>Thu, 01 Oct 2009 06:08:08 GMT</pubDate></item><item><title>Shape avec coins arrondis ou autres</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000722</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000722</guid><description>Les Shape de Visual Foxpro permettent de faire des arrondis simples dans les coins avec Curvature. &lt;br /&gt; On peut aussi faire des formes libres grâce à Polypoints. &lt;br /&gt; &lt;br /&gt; La classe ShpCorners vous permet de faire différents types de coins : &lt;br /&gt; - l'arrondi classique (ou sortant) &lt;br /&gt; - l'arrondi rentrant &lt;br /&gt; - le coin bizauté ou diagonale &lt;br /&gt; - le coin rentrant &lt;br /&gt; &lt;br /&gt; Le type peut être défini séparément pour chaque coin grâce aux propriétés cHGcorner, cHDcorner, cBDcorner, cBGcorner (haut gauche, haut droit, ...). On définit également le nombre de points ou le % (par rapport à largeur et hauteur) servant de base au coin. &lt;br /&gt; (Chaine caractère de la forme nnn.nn%C ou nnnnC : Pourcentage ou Nombre de points pour coin + type coin (si vide coin normal, si pas de nn 10% par défaut / types : A = Arrondi sortant, R = Arrondi rentrant, D = coin diagonale, I = coin inversé) &lt;br /&gt; &lt;br /&gt; Dans le zip, un fichier exemple pour illustrer l'utilisation. &lt;br /&gt;</description><author>DDU</author><category>06 - VCX - Bibliothèque de classes visuelles</category><pubDate>Thu, 01 Oct 2009 06:08:08 GMT</pubDate></item><item><title>Methodes d'extension Stream: AppendFrom, AppendTo</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000720</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000720</guid><description>Quelques methodes pour se faciliter la vie &lt;br /&gt; &lt;br /&gt; (1) streamIn.AppendTo(streamOut) (2) streamOut.AppendFrom(streamIn) - la meme chose que (1) (3) stream.ReadBlock() : pour lire exactement nBytes (ou un multiple de nBytes) d'un stream &lt;br /&gt; &lt;br /&gt;</description><author>Gregory Adam</author><category>01 C#</category><pubDate>Tue, 15 Sep 2009 06:08:08 GMT</pubDate></item><item><title>Comment trouver une adresse physique à partir de coordonnés GPS et Google Maps</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000719</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000719</guid><description>Voici la fonction inverse de la fonction trouvée ici : http://www.atoutfox.org/articles.asp?ACTION=FCONSULTER&amp;ID=0000000715 La technique se nomme (en Anglais) Reverse Geocoging. N.B. La science de Reverse Geocoding n'est très précise. Mais utile. Le résultat de cette fonction donne un fichier XML avec beaucoup d'information. À vous d'extraire l'information à vos besoins.</description><author>Mike Gagnon</author><category>09 - Automation</category><pubDate>Mon, 07 Sep 2009 06:08:08 GMT</pubDate></item><item><title>Utiliser un Document Word comme corps d'un email expédié avec VFPwinsock</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000718</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000718</guid><description>Après des échanges en emails sur "comment envoyer un mail avec vfpwinsock dont le corps du message (textes et images) proviennent de document word : je vous propose ci après une compilation des enchainements de petits traitements permettant d'ouvrir une document word dans word, l'enregistrer en htm et de le convertir en MHTML pour expédition. &lt;br /&gt; Bien sûr pour chacun des points il existe déjà des exemples sur www.atoutfox.org &lt;br /&gt; Cordialement &lt;br /&gt; Francis FAURE &lt;br /&gt;</description><author>Francis Faure</author><category>01 - PRG : Programmation</category><pubDate>Fri, 04 Sep 2009 06:08:08 GMT</pubDate></item><item><title>Comment trouver les coordonnées GPS avec une adresse physique et Google Maps</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000715</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000715</guid><description>Voici un example comment déterminer les coodonnées GPS d'une adresse physique avec Google Maps. Vous trouverez la fonction inverse (Reverse Geocoding) ici: http://www.atoutfox.org/articles.asp?ACTION=FCONSULTER&amp;ID=0000000719</description><author>Mike Gagnon</author><category>09 - Automation</category><pubDate>Wed, 26 Aug 2009 06:08:08 GMT</pubDate></item><item><title>Gérer Google Maps dans une forme</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000714</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000714</guid><description>Voici une façon de gérer Google maps avec Foxpro. Cet exemple montre comment tracer un itinéraire à partir d'un point vers un autre. Par défaut le point de départ est l'hôtel Novatel à Paris (adresse postale 75015), et si vous mettez par exemple 75010, vous verrez apparaitre une carte de la région de Paris, avec le tracé entre 75015 et 75010. Aussi vous verrez un texte à la gauche décrivant l'itinéraire et aussi vu qu'en France il y a des Google Cams, vous pouvez aussi voir une image 360 degrés d'une rue en particulier.</description><author>Mike Gagnon</author><category>09 - Automation</category><pubDate>Tue, 25 Aug 2009 06:08:08 GMT</pubDate></item><item><title>Ouvrir et fermer le Class Designer par programme</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000713</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000713</guid><description>Une classe visuelle est entièrement modifiable par programmation, grâce aux méthodes et fonctions : &lt;br /&gt; &lt;br /&gt; .ReadMethod() &amp; .WriteMethod() &lt;br /&gt; .ReadExpression() &amp; .WriteExpression() &lt;br /&gt; .addProperty() &lt;br /&gt; &lt;br /&gt; AddProperty() &lt;br /&gt; RemoveProperty() &lt;br /&gt; &lt;br /&gt; etc. &lt;br /&gt; &lt;br /&gt; Le plus délicat est de piloter le Class Designer par programme &lt;br /&gt; &lt;br /&gt; La classe 'acClassDesigner' peut vous y aider &lt;br /&gt;</description><author>zenbuyer</author><category>06 - VCX - Bibliothèque de classes visuelles</category><pubDate>Fri, 21 Aug 2009 06:08:08 GMT</pubDate></item><item><title>Comment distribuer un application avec Activex sans les enregistrer</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000711</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000711</guid><description>Une des situations que l'on rencontre souvent est comment distribuer un application qui contient des Activex sans avoir besoin de enregistrer dans la base de registre. Il existe plusieurs type d'application sur le marché qui peuvent vous aider à résoudre ce problème. BoxedApp et MoleBox en sont deux. Pour ma part j'ai testé les 2 et j'ai eu des résultats satisfaisant avec BoxedApp. Mes tests avec MoleBox n'ont pas été satisfaisants et je n'ai pas poussé mes recherches plus loin. MoleBox dans leur documentation précisent que c'est faisable, à vous de tester. Voici comment j'ai fait: 1. Créer une application en utilisant plusieurs activex. 2. Créer un petit exécutable qui fait appel à l'application ci-haut. 3. Utiliser BoxedApp packer pour modifier l'exécutable et y ajouter les Activex utilisés dans l'application. 4. Copier les deux applications sur un poste vierge (qui ne contient pas ces activex.) 5. Tout marche comme si les Activex étaient présents sur le poste. BoxedApp crée un entrée temporaire (pas dans la base de registre) qui prétend être une entrée de registre, lors de l'exécution du programme. Et pour la durée de la session l'application réagie comme si les Activex était présent dans la base de registre. Comme on le sait normalement si une application utilise un Activex, l'activex doit être enregistré à chaque poste, mais avec la technique ci-haut, on peut mettre l'exécutable sur le serveur sans avoir à enregistrer quoi que ce soit. P.S. Et vu que BoxedApp modifie l'original, cela a pour effet de aussi protéger l'exécutable contre la décompilation. http://www.boxedapp.com/ http://www.molebox.com/ P.P.S. Il semble qu'utiliser la fonction sys(3) cause au problème avec BoxedApp, à éviter, utiliser SYS(2015) à sa place.</description><author>Mike Gagnon</author><category>20 - Trucs et Astuces</category><pubDate>Wed, 19 Aug 2009 06:08:08 GMT</pubDate></item><item><title>un exemple de treeview</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000709</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000709</guid><description>Ci-joint un exemple de treeview. Il concerne la sélection d'une famille selon divers critères dans une école. Le treeview est mis dans un container qui va héberger la plupart des méthodes programmées. L'outil 'treeview' gère des noeuds dont il est capable de donner la clef quand on clique dessus. On va rechercher cette clef dans un cursor associé au treeview. C'est ce cursor qui va nous donner les informations sur le noeud et, en particulier, l'action à faire. &lt;br /&gt; &lt;br /&gt; La clef contient donc de l'information et sa structure doit être très étudiée. Pour ma part, la 1ère lettre indique la branche de niveau 1 (la plus haute) du noeud sur lequel on vient de cliquer; cette lettre va permettre l'aiguillage vers la méthode d'execution du noeud cliqué dans la méthode oletree.node_click. A chaque niveau, on ajoute un texte supplémentaire à la clef (première lettre du nom de famille, nom de la classe, ...), texte qui sera décodé et analysé dans la méthode correspondante résultat de l'aiguillage. &lt;br /&gt; &lt;br /&gt; Pour ce treeview la en particulier : on ne l'utilise pas d'emblée dans la form donc son calcul initial n'est pas fait dans sa méthode init mais dans la méthode ... 'calcul_initial'. Vous devez commencer par étudier cette méthode que j'ai essayé de bien documenté, du moins dans son début. En fait, cette méthode est relativement longue mais on fait N fois la même chose à quelques détails près. Quand vous aurez étudié son début, vous irez à sa fin pour y voir la construction proprement dite du treeview. &lt;br /&gt; &lt;br /&gt; 2 détails : on y fait référence à 2 tables que j'utilise tout le temps : &lt;br /&gt; - texte contient les textes des aides; chaque texte est répéré par une clef du type : nom de la form + nom de la méthode + numéro dicriminant (10+10+2 car) &lt;br /&gt; - messages contient (presque) tous les libellés utilisés dans chaque form. La clef est un entier qui est contenu dans une propriété de chaque form. J'ai essayé de mettre les textes en clair au lieu du contenu de messages dans le début du calcul_initial &lt;br /&gt; &lt;br /&gt; Je suis à votre disposition pour tout renseignement complémentaire. &lt;br /&gt; &lt;br /&gt;</description><author>Jean à Grenoble</author><category>06 - VCX - Bibliothèque de classes visuelles</category><pubDate>Fri, 14 Aug 2009 06:08:08 GMT</pubDate></item><item><title>Foxcode partage</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000708</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000708</guid><description>J'ai ajouté une nouvelle fonctionnalité à FoxcodeAddon en plus de la correction de multiple bugs. &lt;br /&gt; &lt;br /&gt; Téléchargez la nouvelle mise à jour fait ajourd'hui et regardez ci-bas ce que génère le bouton Partager &lt;br /&gt; &lt;br /&gt; ne vous reste plus qu'à coller dans une fenêtre d'édition et exécuté le code pour àjouter GetDrive &lt;br /&gt; à Foxcode &lt;br /&gt; &lt;br /&gt; le lien pour FoxCodeAddon &lt;br /&gt; http://www.atoutfox.org/articles.asp?ACTION=FCONSULTER&amp;ID=0000000418 &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;</description><author>eddymaue</author><category>21 - Outils</category><pubDate>Thu, 16 Jul 2009 06:08:08 GMT</pubDate></item><item><title>Trouver instannément un(des) fichier(s) sur l'un de vos disques</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000707</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000707</guid><description>en encore moi, &lt;br /&gt; &lt;br /&gt; et là avec un outil qui m'impressionne. Trouver instantanément un fichier ou un ensemble de fichiers grace à une requete SQL. &lt;br /&gt; &lt;br /&gt; Vous n'avez qu'à adapter le fichier ffd.config et construire un exécutable avec le projet que je vous propose &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; Chez moi la compilation 105,000 fichiers recensée sur mes 2 disques ( C: (7 secondes) et sur le E: (5 secondes)) est rafraichit à toutes les minutes. &lt;br /&gt; &lt;br /&gt; ne me reste plus qu'à faire une requête sur la table ffd.dbf pour trouver instannément tout ce que vous voulez. &lt;br /&gt; &lt;br /&gt; Je crois qu'il va se développer toutes sortes d'outils autour de ce moteur de recherdhe sur disque. J'espère que vous partagerez vos idées avec nous. &lt;br /&gt; &lt;br /&gt; une facon simple serait d'écrire "ffd-vos idées" &lt;br /&gt; &lt;br /&gt; a+ et bon plaisirs dans la rechercherche de vos documents sur vos disques (Maintenant vous pouvez dire INSTANTANNÉ) &lt;br /&gt; &lt;br /&gt; Lundi 13 juillet 2009 p'tite correction &lt;br /&gt; &lt;br /&gt; La requête avec select - sql doit respecter l'ordre suivant &lt;br /&gt; &lt;br /&gt; Select cfiles from ("e:\owner\eddy\vfpMesPrjets\Ffiles\ffd.dbf") ;&lt;br /&gt; WHERE Likec("*.prg",Alltrim(cFiles)) and"fopen(" $ Lower(FileToStr(cfiles)) ;&lt;br /&gt; into cursor MyQuery&lt;br /&gt; FLUSH in ffd &amp;&amp; avant d'utiliser "Use in ffd" &lt;br /&gt; Use in ffd&lt;br /&gt;Select MyQuery &lt;br /&gt;Browse last NOWAIT &lt;br /&gt;modi command (FFD.cFiles) NOWAIT &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; e:\owner\eddy\vfpMesPrjets\Ffiles\ est la localisation de la table chez moi &lt;br /&gt; &lt;br /&gt; l'important c'est le " FLUSH in ffd " qui chez moi empêche le rafraîchissement avec FFD.EXE si &lt;br /&gt; cette ligne n'est pas exécuté &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;</description><author>eddymaue</author><category>21 - Outils</category><pubDate>Tue, 07 Jul 2009 06:08:08 GMT</pubDate></item><item><title>Hash MD5 (C#)</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000706</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000706</guid><description>&lt;br /&gt; Chaque methode retourne un tableau : byte[16] qui contient le hash md5 &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; - public byte[] Hash(byte[] input, int index, int count) &lt;br /&gt; &lt;br /&gt; - public byte[] Hash(byte[] input) &lt;br /&gt; &lt;br /&gt; - public byte[] Hash(byte[] input)byte[] Hash(byte[] input) &lt;br /&gt; &lt;br /&gt; - public byte[] Hash(string input) // le string est converti d'abord en byte[] utf8 &lt;br /&gt; &lt;br /&gt; - public byte[] Hash(string input, int index, int count) // une partie du string est convertie d'abord en byte[] utf8 &lt;br /&gt; &lt;br /&gt; - public byte[] Hash(Stream stream) &lt;br /&gt; &lt;br /&gt; - public byte[] HashFile(string FileName) &lt;br /&gt;</description><author>Gregory Adam</author><category>01 C#</category><pubDate>Mon, 06 Jul 2009 06:08:08 GMT</pubDate></item><item><title>RC4 encryption (C#)</title><link>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000705</link><guid>http://www.atoutfox.org/articles.asp?action=fconsulter&amp;ID=0000000705</guid><description>RC4 encryption Une classe qui implémente l&amp;rsquo;algorithme de cryptage en C# &lt;br /&gt; &lt;br /&gt; Contenu &lt;br /&gt; &lt;br /&gt; (1) La classe RC4 &lt;br /&gt; (2) Quelques méthodes d&amp;rsquo;extension &lt;br /&gt; a. Array &lt;br /&gt; i. Copy() &lt;br /&gt; ii. Swap() &lt;br /&gt; b. Encoding &lt;br /&gt; i. ToUTF8() &lt;br /&gt; ii. FromUTF8() &lt;br /&gt; c. HexConversion &lt;br /&gt; i. ToHex() &lt;br /&gt; ii. FromHex() &lt;br /&gt; &lt;br /&gt; La Classe RC4 &lt;br /&gt; &lt;br /&gt; (1) Constructors &lt;br /&gt; a. RC4(byte[] key) &lt;br /&gt; b. RC4(string key) &lt;br /&gt; (2) Methods &lt;br /&gt; a. void Encrypt(byte[] b) &lt;br /&gt; b. void Encrypt(byte[] b, int index, int count) &lt;br /&gt; c. byte[] Encrypt(string s) &lt;br /&gt; d. void Encrypt(Stream streamIn, Stream streamOut) &lt;br /&gt; &lt;br /&gt; Il y a des exemples + test dedans &amp;ndash; voir première ligne de la classe &lt;br /&gt; //#define TESTSUITE_RC4 // uncomment for testsuite &lt;br /&gt; &lt;br /&gt;</description><author>Gregory Adam</author><category>01 C#</category><pubDate>Sat, 04 Jul 2009 06:08:08 GMT</pubDate></item><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 06:08:08 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 06:08:08 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 06:08:08 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 06:08:08 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 06:08:08 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 06:08:08 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 06:08:08 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 06:08:08 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 06:08:08 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 06:08:08 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 06:08:08 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 06:08:08 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 06:08:08 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 06:08:08 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 06:08:08 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 06:08:08 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 06:08:08 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 06:08:08 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 06:08:08 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 06:08:08 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 06:08:08 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 06:08:08 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 06:08:08 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 06:08:08 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 06:08:08 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 06:08:08 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>Fri, 12 Mar 2010 06:08:08 GMT</pubDate></item></channel></rss>
