فيجوال فوكس برو

التاريخ الحديث

في أواخر عام 2002، وثبت أن الفوكس برو البصرية يمكن تشغيلها على لينكس في إطار التوافق النبيذ جناح ويندوز. في عام 2003، وهذا أدى إلى شكاوى من قبل مايكروسوفت : كان وادعى أن نشر رمز الفوكس برو وقت التشغيل على الأجهزة غير يندوز ينتهك اتفاقية ترخيص المستخدم.
في ديسمبر 2005، اندلعت في 20 في اف بهي الأعلى على مؤشر تايوب  لأول مرة. في مارس 2007 وكان في موقف 19، مما يجعلها "ب" اللغة. اعتبارا من آب / أغسطس، 2010 ففب (جنبا إلى جنب مع اكس باس (هو في موقف 25.
في مارس 2007، أعلنت شركة مايكروسوفت أنه لن يكون هناك 10 ,  في اف بهي، مما يجعل في اف بهي9 (تم الإفراج عنه لتصنيع يوم 17 ديسمبر 2004) الماضي إطلاق سراح في اف بهي التجارية من مايكروسوفت. بدعم من النسخة 9 مستمر مع حزم الخدمات التي تم إصدارها 8 ديسمبر 2005 و11 أكتوبر 2007.
نهاية الإعلان الحياة، والعمل على إطلاق سراح المقبل تحمل الاسم الرمزي سدنا (سميت على اسم كوكب قزم اكتشفت مؤخرا) والتي بنيت على أعلى من مصدر برنامج في اف بهي9 قد بدأت بالفعل. "" هو مجموعة من إضافات إلى 9،0 في اف بهي مكونات اكس باس لدعم عدد من سيناريوهات التشغيل المتداخل مع تقنيات مايكروسوفت المختلفة بما في ذلك مزود خدمة 2005، وصافي الإطار، ويندوز فيستا، مكتب 2007، والبحث في ويندوز وفريق مؤسسة خادم (تي إف إس). أطلقت مايكروسوفت سدنا تحت الرخصة المصدر المشتركة على موقع رمز الصفيف
. وأوضحت مايكروسوفت أن جوهر في اف بهي  ستبقى مغلقة المصدر. وأطلق سراح  على 25 يناير 2008 . اعتبارا من مارس 2008، كانت جميع مكونات اكس باس من حزمة الخدمة اس بي2 9 في اف بهي (بما في ذلك سدنا) المتاحة للتنمية المجتمعات المحلية في قانون الصفيف.
في أواخر آذار / مارس 2007 وبدأ حملة شعبية من قبل المجتمع الفوكس برو الناطقة بالإسبانية في MasFoxPro  (باللغة الإنجليزية MoreFoxPro) للتوقيع على عريضة لمايكروسوفت أن يواصل استكمال الفوكس برو البصرية  أو الإفراج عنها للمجتمع والمصدر المفتوح. يوم 3 أبريل 2007 ولوحظ حركة من قبل الصحافة الفنية 
أيضا في 3 أبريل 2007 وردت مايكروسوفت لطلبات الالتماس مع هذا البيان من جرافيرآلان
وقال
  "نحن ندرك تماما من المجتمع الفوكس برو والتي لعبت دورا كبيرا في ما أعلنا في 13 مارس. انها أبدا قرارا سهلا أن نعلن أننا لن الإفراج عن آخر نسخة من منتج وانها واحدة التي نعتبرها بعناية فائقة                                       

  "نحن لا تعلن انتهاء الفوكس برو : من الواضح أن تطبيقات الفوكس برو مواصلة العمل من قبل بعض تقديراتنا الداخلية، وهناك المزيد من التطبيقات التي تعمل في الفوكس برو 2،6 من هناك في VFP والفوكس برو 2،6 لم معتمدة في العديد من. وسيتم دعم سنوات. البصرية الفوكس برو 9 من قبل مايكروسوفت خلال عام 2015.

  "بالنسبة لمايكروسوفت على مواصلة تطوير قاعدة الفوكس برو، فإننا نحتاج إلى النظر في خلق بيئة التطوير 64 بت والتي من شأنها أن تنطوي على إعادة كتابة كاملة تقريبا للمنتج الأساسية. استثمرنا نحن أيضا في إنشاء قاعدة بيانات قابلة للتطوير مع مزود خدمة، بما في ذلك متاحة بحرية مزود خدمة اكسبريس الطبعة. بقدر تشكيل شراكة مع طرف ثالث هو المعنية، لقد سمعنا من عدد من العملاء الكبيرة التي الفوكس برو هذا من شأنه أن يجعل من المستحيل بالنسبة لهم الاستمرار في استخدام الفوكس برو منذ لن يكون من بائع المعتمدة. شعرنا أن وضع البيئة في المصدر المفتوح على الصفيف المدونة، التي توازن بين احتياجات المجتمع على حد سواء والزبائن كبير، هو أفضل طريق للمضي قدما. "

نماذج التعليمات البرمجية

لغة الفوكس برو يحتوي على أوامر مماثلة تماما لغات البرمجة الأخرى مثل الأساسية. وتشمل حلقات القيام به، إذا، في حين، لأنه آخر الأوامر في استخدام يسهل فهمها من قبل أي شخص على دراية بلغات البرمجة الأخرى. أوامر تتخذ شكل "أمر" نهاية الأمر ""
بعض العينات بناء الجملة الأساسية
FOR i=1 to 10
   x = x + 6.5
ENDFORIF i=25
   i = i + 1
ELSE
   i = i + 3
ENDIFx=1
DO WHILE x < 50
   x=  x + 1
ENDDO
اللغة كما تلاعب واسعة النطاق قاعدة البيانات والأوامر الفهرسة. "تعليمات" فهرس الأوامر في VFP 9 ديها عدة مئات من الأوامر والمهام الموصوفة. الأمثلة إظهار رمز أدناه كيفية إنشاء الجداول وفهرسة، ولكن VFP والطاولة والشاشات منشئ قاعدة البيانات التي إنشاء الجداول والفهارس من دون كتابة التعليمات البرمجية.
على سبيل المثال مرحبال العالم:
MESSAGEBOX("Hello World")

كائن

loForm = CREATEOBJECT("HiForm")
loForm.Show(1)

DEFINE CLASS HiForm AS Form
  AutoCenter =.T.
  Caption = "Hello, World"

  ADD OBJECT lblHi as Label WITH ;
    Caption = "Hello, World!"ENDDEFINE
loMine = CREATEOBJECT("MyClass")
? loMine.cProp1   && This will work. (Double-ampersand marks an end-of-line comment)
? loMine.cProp2   && Program Error: Property CPROP2 is not found.

? loMine.MyMethod1()  && This will work.
? loMine.MyMethod2()  && Program Error: Property MYMETHOD2 is not found.DEFINE CLASS MyClass AS Custom
  cProp1 = "My Property"    && This is a public property
  HIDDEN cProp2     && This is a private (hidden) property

  PROCEDURE Init()    && Class constructor
    This.cProp2 = "This is a hidden property."
  ENDPROC

  PROCEDURE MyMethod1()
    * This is a public method, calling a hidden method that returns
    * the value of a hidden property.
    RETURN This.MyMethod2()
  ENDPROC

  HIDDEN PROCEDURE MyMethod2()  && This is a private (hidden) method
    RETURN This.cProp2
  ENDPROCENDDEFINE

معالجة البيانات

&& Create a table
CREATE TABLE randData (iData I)

&& Populate with random data using xBase and SQL DML commands
FOR i = 1 TO 50
    APPEND BLANK
    REPLACE iData WITH (RAND() * 100)

    INSERT INTO randData (iData) VALUES (RAND() * 100)
ENDFOR

&& Place a structural index on the data
INDEX ON iData TAG iData
CLOSE ALL

&& Display ordered data using xBase-style commands
USE randData
SET ORDER TO iData
GO TOP
LIST NEXT 10  && First 10 GO BOTTOM
SKIP -10
LIST REST     && Last 10CLOSE ALL

&& Browse ordered data using SQL DML commands
SELECT * ;
  FROM randData ;
  ORDER BY iData DESCENDING

دبك الوصول باستخدام مزود العبور

&& Connect to an ODBC data source
LOCAL nHnd
nHnd = SQLCONNECT ("ODBCDSN", "user", "pwd")

&& Execute a SQL command
LOCAL nResult
nResult = SQLEXEC (nHnd, "USE master")
IF nResult < 0
  MESSAGEBOX ("MASTER database does not exist!")
  RETURNENDIF

&& Retrieve data from the remote server and stores it in
&& a local data cursornResult = SQLEXEC (nHnd, "SELECT * FROM authors", "QAUTHORS")

&& Update a record in a remote table using parameters
PRIVATE cAuthorID, cAuthorName
cAuthorID = "1001"cAuthorName = "New name"nResult = SQLEXEC (nHnd, "UPDATE authors SET auth_name = ?cAuthorName WHERE auth_id = ?cAuthorID")

&& Close the connection
SQLDISCONNECT(nHnd)