Article de reference

Visual FoxPro

{{cite web|title=Visual FoxPro 9.0 Updates|url=http://www.microsoft.com/en-us/download/details.aspx?id=13959|work=Visual FoxPro Developer Center|publisher=Microsoft|access-date=...

langage de programmation développé par Microsoft . Il s'agit d'un langage de programmation procédural et axé sur les données , doté de fonctionnalités de programmation orientée objet (POO).

Il était dérivé de FoxPro (lui-même issu de FoxBASE), développé par Fox Software à partir de 1984. Fox Technologies a fusionné avec Microsoft en 1992, après quoi le logiciel a acquis de nouvelles fonctionnalités et le préfixe « Visual ». FoxPro 2.6 fonctionnait sous Mac OS , DOS , Windows et Unix .

Visual FoxPro 3.0, la première version « Visual », était initialement compatible uniquement avec Mac et Windows, et les versions suivantes (5, 6, 7, 8 et 9) étaient exclusivement compatibles avec Windows. La version actuelle de Visual FoxPro est basée sur COM et Microsoft a indiqué ne pas prévoir de créer une version .NET . xBase », dont la syntaxe est basée sur le langage de programmation dBase . Clipper et Recital (base de données) font également partie de cette famille .

Visual FoxPro, souvent abrégé en VFP, est étroitement intégré à son propre moteur de base de données relationnelle, qui étend les capacités xBase de FoxPro pour prendre en charge les requêtes SQL et la manipulation des données. Contrairement à la plupart des systèmes de gestion de bases de données , Visual FoxPro est un langage de programmation complet et dynamique qui ne nécessite pas l'utilisation d'un environnement de programmation généraliste supplémentaire. Il permet de développer non seulement des applications clientes traditionnelles , mais aussi des intergiciels et des applications web .

Fin 2002, il a été démontré que Visual FoxPro pouvait fonctionner sous Linux grâce à la suite de compatibilité Windows Wine . En 2003, cela a suscité des plaintes de la part de Microsoft : il a été affirmé que le déploiement du code d’exécution FoxPro sur des machines non-Windows violait le contrat de licence utilisateur final .

Visual FoxPro a connu une ascension fulgurante suivie d'une chute brutale de sa popularité, comme le montre l' indice TIOBE de la communauté de programmation . En décembre 2005, VFP a fait son entrée dans le top 20. En juin 2006, il a atteint la 12e place, ce qui en faisait (à l'époque) un langage de catégorie « B ». planète naine récemment découverte ) et basée sur le code source de VFP9, avait déjà commencé. Sedna est un ensemble d'extensions pour VFP 9.0, comprenant des composants xBase, afin de prendre en charge divers scénarios d'interopérabilité avec différentes technologies Microsoft, notamment SQL Server 2005, .NET Framework , Windows Vista, Office 2007, la recherche Windows et Team Foundation Server (TFS). Microsoft a publié Sedna sous licence de logiciel libre sur le site CodePlex . Microsoft a précisé que le noyau de VFP resterait propriétaire. Sedna a été publié le 25 janvier 2008. En mars 2008, tous les composants xBase de VFP 9 SP2 (y compris Sedna) étaient disponibles pour le développement communautaire sur CodePlex.

Fin mars 2007, la communauté hispanophone de FoxPro a lancé une campagne citoyenne sur MásFoxPro (« MoreFoxPro » en anglais ) afin de recueillir des signatures pour une pétition adressée à Microsoft, demandant la poursuite des mises à jour de Visual FoxPro ou sa mise à disposition en open source . Le 3 avril 2007, ce mouvement a été relayé par la presse spécialisée.

Le 3 avril 2007, Microsoft a répondu à la pétition par cette déclaration d'Alan Griver :

« Nous sommes très conscients de l'importance de la communauté FoxPro et cela a joué un rôle majeur dans notre annonce du 13 mars. Ce n'est jamais une décision facile d'annoncer que nous n'allons pas sortir une autre version d'un produit et c'est une décision que nous prenons avec la plus grande attention. »

Nous n'annonçons pas la fin de FoxPro : les applications FoxPro continueront bien entendu de fonctionner. Selon nos estimations internes, FoxPro 2.6 est plus utilisé que VFP, et FoxPro 2.6 n'est plus pris en charge depuis de nombreuses années. Visual FoxPro 9 sera pris en charge par Microsoft jusqu'en 2015.

Pour que Microsoft puisse continuer à faire évoluer FoxPro, il faudrait envisager la création d'un environnement de développement 64 bits, ce qui impliquerait une réécriture quasi complète du produit. Nous avons également investi dans la création d'une base de données évolutive avec SQL Server, notamment l'édition gratuite SQL Server Express. Concernant un éventuel partenariat avec un tiers, plusieurs grands clients FoxPro nous ont fait part de leur inquiétude : il leur serait alors impossible de continuer à utiliser FoxPro, car celui-ci ne proviendrait plus d'un fournisseur agréé. Nous avons donc estimé que la mise à disposition de l'environnement en open source sur CodePlex , qui concilie les besoins de la communauté et ceux des grands clients, constituait la meilleure solution.

Chronologie des versions

Toutes les versions listées sont pour Windows.

Versiondate de sortie
Visual FoxPro 3.0Juin 1995
Visual FoxPro 5.0Octobre 1996
Visual FoxPro 5.0aOctobre 1997
Visual FoxPro 6.018 mai 1998
Visual FoxPro 7.027 juin 2001
Visual FoxPro 8.01er février 2003
Visual FoxPro 8.0 Service Pack 17 octobre 2003
Visual FoxPro 920 décembre 2004
Visual FoxPro 9 Service Pack 18 décembre 2005
Visual FoxPro 9 Service Pack 216 octobre 2007

Exemples de code

Le langage FoxPro contient des commandes assez similaires à celles d'autres langages de programmation tels que BASIC.

Quelques exemples de syntaxe de base :

) CAS nMonth <= 6 MESSAGEBOX ( "T2 " ) CAS nMonth <= 9 MESSAGEBOX ( "T3 " ) SINON MESSAGEBOX ( "Q4 " ) ENDCASEPOUR CHAQUE contrôle o DANS CE FORMULAIRE .Controls MESSAGEBOX (o Control .Name ) FIN POURf = Factorielle(10) FONCTION Factorielle(n) LOCALE i, r r = 1 POUR i = n À 1 PAS -1 r = r * i SUIVANT && On peut aussi utiliser « FIN POUR » ici au lieu de « SUIVANT » RETOURNER r FIN DE FONCTION

Exemples de « Hello World » :

* Afficher à l'emplacement spécifié @ 1,1 DIRE "Bonjour le monde"* Affichage dans une fenêtre séparée, effacée lors de la saisie. FENÊTRE D' ATTENTE "Hello World"* Affichage dans une boîte de dialogue standard, effacée en cliquant sur OK MESSAGEBOX ( "Bonjour le monde" )

Objet

Résultat du programme Hello World .
)loForm.Afficher ( 1 )DÉFINIR LA CLASSE HiForm COMME FormulaireAutoCenter = . T .Légende = "Bonjour, monde"AJOUTER L'OBJET lblHi en tant qu'étiquette ;AVEC légende = "Bonjour, monde !"FINDEFINE
) ? loMine.cProp1 && Cela fonctionnera. (Le double esperluette indique un commentaire de fin de ligne)? loMine.cProp2 && Erreur de programme : La propriété CPROP2 est introuvable car elle est masquée en externe.? loMine.MyMethod1() && Cela fonctionnera.? loMine.MyMethod2() && Erreur de programme : La propriété MYMETHOD2 est introuvable car elle est masquée en externe.DÉFINIR LA CLASSE MyClass COMME PersonnaliséecProp1 = "Ma propriété" && Ceci est une propriété publiquePropriété cachée cProp2 && Ceci est une propriété privée (cachée)dProp3 = {} && Une autre propriété publiquePROCÉDURE Init() && Constructeur de classeCeci .cProp2 = "Ceci est une propriété cachée."PROCÉDURE dProp3_Access && Récupérateur de propriétéDATE DE RETOUR () PROCÉDURE dProp3_As signe (vNewVal) && Le setter de propriété utilise la balise « _assign » sur le nom de la propriétéSI VARTYPE (vNewVal) = "D"CECI .dProp3 = vNewVal FINSIPROCÉDURE MaMéthode1() * Il s'agit d'une méthode publique appelant une méthode cachée qui renvoie* la valeur d'une propriété cachée.RETOURNER This .MyMethod2() PROCÉDURE CACHÉE MyMethod2() && Ceci est une méthode privée (cachée)RETOURNER Ce .cProp2 FINDEFINE
  • VFP dispose d'une vaste bibliothèque de classes prédéfinies et d'objets visuels auxquels on accède dans l' IDE par une feuille de propriétés (y compris les méthodes ), de sorte que le code tel que celui ci-dessus définissant les classes et les objets n'est nécessaire qu'à des fins spécifiques et pour le cadre des grands systèmes.

Gestion des données

Le langage offre également de nombreuses commandes pour la manipulation et l'indexation des bases de données. L'index d'aide de VFP 9 décrit plusieurs centaines de commandes et de fonctions. Les exemples ci-dessous illustrent la création et l'indexation des tables ; toutefois, VFP propose des interfaces de création de tables et de bases de données qui permettent de créer ces opérations automatiquement, sans avoir à écrire de code.

Résultat du programme de traitement des données .
, "utilisateur" , "mot de passe" ) * Entrez dans une boucle afin de pouvoir sortir et exécuter le code de fermeture de connexion en cas d'erreur.FAIRE PENDANT QUE .T.* Exécuter une commande SQLnResult = SQLEXEC (nHnd, "USE master" ) SI nResult < 0 MESSAGEBOX ( "La base de données MAÎTRE n'existe pas !" ) SORTIE && Pour fermer la connexionFINSI* Récupérer les données du serveur distant et les stocker dans un curseur de données localnResult = SQLEXEC (nHnd, "SELECT * FROM authors" , "QAUTHORS" ) SI nResult < 0 MESSAGEBOX ( "Impossible d'exécuter la commande SQL SELECT distante !" ) SORTIE && Pour fermer la connexionFINSI* Mettre à jour un enregistrement dans une table distante à l'aide de paramètrescAuthorID = "1001"cAuthorName = "Nouveau nom"nResult = SQLEXEC (nHnd, "UPDATE authors SET auth_name = ?cAuthorName WHERE auth_id = ?cAuthorID" ) SI nResult < 0 MESSAGEBOX ( "Impossible d'exécuter la commande SQL UPDATE distante !" ) SORTIE && Pour fermer la connexionFINSISi nous arrivons jusqu'ici, c'est que nous avons tout récupéré avec succès.SORTIE && Sortie inconditionnelleFIN* Fermez la connexionSQLDISCONNECT (nHnd)