Visual FoxPro - Visual FoxPro

Visual FoxPro
VisualFoxProScreenshot.png
Visual FoxPro v9 ejecutándose en Windows XP
Desarrollador (es) Microsoft
Lanzamiento final
v9.0 SP2 / 16 de octubre de 2007 ; hace 13 años ( 2007-10-16 )
Sistema operativo Windows 2000 , Windows XP y Windows Server 2003
Plataforma IA-32
Disponible en IDE: inglés, alemán, español
Tiempo de ejecución: arriba más francés, chino, ruso, checo, coreano
Tipo Entorno de desarrollo integrado , lenguaje de programación
Licencia Software propietario comercial
Sitio web msdn .microsoft .com / vfoxpro

Visual FoxPro era un lenguaje de programación procedimental centrado en datos de Microsoft que posteriormente se volvió orientado a objetos .

Se derivó de FoxPro (originalmente conocido como FoxBASE) que fue desarrollado por Fox Software a partir de 1984. Fox Technologies se fusionó con Microsoft en 1992, después de lo cual el software adquirió más funciones y el prefijo "Visual". FoxPro 2.6 funcionó en Mac OS , DOS , Windows y Unix .

Visual FoxPro 3.0, la primera versión "Visual", redujo el soporte de la plataforma solo a Mac y Windows, y las versiones posteriores 5, 6, 7, 8 y 9 eran solo para Windows. La versión actual de Visual FoxPro está basada en COM y Microsoft ha declarado que no tienen la intención de crear una versión de Microsoft .NET .

La versión 9.0, lanzada en diciembre de 2004 y actualizada en octubre de 2007 con el parche SP2, fue la versión final del producto.

Historia

Visual FoxPro se originó como miembro de la clase de lenguajes comúnmente denominados lenguajes " xBase ", que tienen una sintaxis basada en el lenguaje de programación dBase . Otros miembros de la familia de idiomas xBase incluyen Clipper y Recital (base de datos).

Visual FoxPro, comúnmente abreviado como VFP, está estrechamente integrado con su propio motor de base de datos relacional, que amplía las capacidades xBase de FoxPro para admitir consultas SQL y manipulación de datos. A diferencia de la mayoría de los sistemas de administración de bases de datos , Visual FoxPro es un lenguaje de programación dinámico con todas las funciones que no requiere el uso de un entorno de programación adicional de propósito general. Se puede utilizar para escribir no solo aplicaciones tradicionales de " cliente pesado ", sino también aplicaciones web y middleware .

A finales de 2002, se demostró que Visual FoxPro puede ejecutarse en Linux con el paquete de compatibilidad Wine Windows. En 2003, esto provocó quejas por parte de Microsoft: se afirmó que la implementación del código FoxPro en tiempo de ejecución en máquinas que no son Windows viola el Acuerdo de licencia de usuario final .

Visual FoxPro tuvo un rápido aumento y caída en popularidad según lo medido por el índice de la comunidad de programación TIOBE . En diciembre de 2005, VFP entró en el top 20 por primera vez. En junio de 2006 alcanzó la posición 12, convirtiéndolo (en ese momento) en un idioma "B". A octubre de 2019, Visual FoxPro ocupa el puesto 51 en el índice TIOBE.

En marzo de 2007, Microsoft anunció que no habrá VFP 10, por lo que VFP9 (lanzado a la fabricación el 17 de diciembre de 2004) es la última versión comercial de VFP de Microsoft. El Service Pack 2 para Microsoft Visual FoxPro 9.0 se lanzó el 16 de octubre de 2007. El soporte de la Versión 9 finalizó el 13 de enero de 2015.

En el momento del anuncio del final de la vida útil, el trabajo en la próxima versión con nombre en código Sedna (que lleva el nombre de un planeta enano descubierto recientemente ) que se construyó sobre la base de código VFP9 ya había comenzado. "Sedna" es un conjunto de complementos para VFP 9.0 de componentes xBase para admitir una serie de escenarios de interoperabilidad con diversas tecnologías de Microsoft, incluidas SQL Server 2005, .NET Framework , Windows Vista, Office 2007, Windows Search y Team Foundation Server (TFS ). Microsoft lanzó Sedna bajo la licencia de fuente compartida en el sitio de CodePlex . Microsoft ha aclarado que el núcleo de VFP seguirá siendo de código cerrado. Sedna se lanzó el 25 de enero de 2008. En marzo de 2008, todos los componentes xBase de VFP 9 SP2 (incluido Sedna) estaban disponibles para el desarrollo comunitario en CodePlex.

A finales de marzo de 2007, la comunidad de FoxPro de habla hispana en MásFoxPro ("MoreFoxPro" en inglés ) inició una campaña de base para firmar una petición a Microsoft para continuar actualizando Visual FoxPro o distribuirlo a la comunidad como código abierto . El 3 de abril de 2007 el movimiento fue notado por la prensa técnica.

El 3 de abril de 2007, Microsoft respondió a la petición con esta declaración de Alan Griver:

"Somos muy conscientes de la comunidad FoxPro y eso jugó un papel importante en lo que anunciamos el 13 de marzo. Nunca es una decisión fácil anunciar que no lanzaremos otra versión de un producto y es una que consideramos muy cuidadosamente.

"No estamos anunciando el final de FoxPro: obviamente, las aplicaciones FoxPro seguirán funcionando. Según algunas de nuestras estimaciones internas, hay más aplicaciones ejecutándose en FoxPro 2.6 que en VFP y FoxPro 2.6 no ha sido compatible en muchos Visual FoxPro 9 será compatible con Microsoft hasta 2015.

"Para que Microsoft continúe evolucionando la base de FoxPro, tendríamos que considerar la creación de un entorno de desarrollo de 64 bits y eso implicaría una reescritura casi completa del producto principal. También hemos invertido en la creación de una base de datos escalable con SQL Server , incluida la edición gratuita SQL Server Express Edition. En lo que respecta a formar una sociedad con un tercero, hemos escuchado de varios clientes importantes de FoxPro que esto les haría imposible continuar usando FoxPro, ya que ya no sería de un proveedor aprobado. Sentimos que poner el entorno en código abierto en CodePlex , que equilibra las necesidades tanto de la comunidad como de los grandes clientes, era el mejor camino a seguir ".

Cronología de la versión

Todas las versiones enumeradas son para Windows.

Versión Fecha de lanzamiento
Visual FoxPro 3.0 Junio ​​de 1995
Visual FoxPro 5.0 Octubre de 1996
Visual FoxPro 5.0a Octubre de 1997
Visual FoxPro 6.0 18 de mayo de 1998
Visual FoxPro 7.0 27 de junio de 2001
Visual FoxPro 8.0 1 de febrero de 2003
Visual FoxPro 8.0 Service Pack 1 7 de octubre de 2003
Visual FoxPro 9 20 de diciembre de 2004
Visual FoxPro 9 Service Pack 1 8 de diciembre de 2005
Visual FoxPro 9 Service Pack 2 16 de octubre de 2007

Muestras de código

El lenguaje FoxPro contiene comandos bastante similares a otros lenguajes de programación como Basic.

Algunas muestras de sintaxis básica:

FOR i = 1 to 10
    x = x + 6.5
NEXT  && Instead of "NEXT" can also use "ENDFOR"

IF i = 25
    i = i + 1
ELSE
    i = i + 3
ENDIF

x = 1
DO WHILE x < 50
    x =  x + 1
ENDDO

x = 1
DO WHILE .T.
    x = x + 1
    IF x < 50
        LOOP
    ELSE
        EXIT
    ENDIF
ENDDO

nMonth = MONTH(DATE())
DO CASE
    CASE nMonth <= 3
        MESSAGEBOX("Q1")

    CASE nMonth <= 6
        MESSAGEBOX("Q2")

    CASE nMonth <= 9
        MESSAGEBOX("Q3")

    OTHERWISE
        MESSAGEBOX("Q4")
ENDCASE

FOR EACH oControl IN THISFORM.Controls
    MESSAGEBOX(oControl.Name)
ENDFOR

f = Factorial(10)

FUNCTION Factorial(n)
LOCAL i, r

    r = 1
    FOR i = n TO 1 STEP -1
        r = r * i
    NEXT  && Can also use "ENDFOR" here instead of "NEXT"
    RETURN r
ENDFUNC

Ejemplos de Hello World:

 * Output at the current location
 ? "Hello World"

 * Output at a specified location
 @ 1,1 SAY "Hello World"

 * Output in a separate window, cleared on input
 WAIT WINDOW "Hello World"

 * Output in a standard dialog box, cleared on OK
 MESSAGEBOX("Hello World")

Objeto

Salida del programa Hello World .
* Output in a defined window
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 because it's hidden externally.

? loMine.MyMethod1()          && This will work.
? loMine.MyMethod2()          && Program Error: Property MYMETHOD2 is not found because it's hidden externally.

DEFINE CLASS MyClass AS Custom
    cProp1 = "My Property"    && This is a public property
    HIDDEN cProp2             && This is a private (hidden) property
    dProp3 = {}               && Another public property

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

    PROCEDURE dProp3_Access   && Property Getter
        RETURN DATE()

    PROCEDURE dProp3_Assign(vNewVal)     && Property Setter uses the "_assign" tag on the property name
        IF VARTYPE(vNewVal) = "D"
            THIS.dProp3 = vNewVal
        ENDIF

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

    HIDDEN PROCEDURE MyMethod2()  && This is a private (hidden) method
        RETURN This.cProp2
ENDDEFINE
  • VFP tiene una extensa biblioteca de clases predefinidas y objetos visuales a los que se accede en el IDE mediante una hoja de propiedades (incluidos los métodos ), por lo que el código como las clases y objetos que definen anteriormente solo se necesita para propósitos especiales y el marco de grandes sistemas.

Manejo de datos

El lenguaje también tiene amplios comandos de indexación y manipulación de bases de datos. El índice de "ayuda" de comandos en VFP 9 tiene varios cientos de comandos y funciones descritas. Los ejemplos a continuación muestran cómo codificar la creación e indexación de tablas, sin embargo, VFP tiene pantallas de creación de tablas y bases de datos que crean las tablas e índices sin tener que escribir código.

Salida del programa de manejo de datos .
 * 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 DATA       && Do not close open libraries etc

 * Display ordered data using xBase-style commands
 USE randData
 SET ORDER TO iData
 LOCATE           && In place of GO TOP. Enforces use of index to find TOP  
 LIST NEXT 10     && First 10
 GO BOTTOM
 SKIP -10
 LIST REST        && Last 10
 CLOSE DATA

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

Acceso ODBC mediante paso a través de SQL

 PRIVATE cAuthorID, cAuthorName      && Private variables supplant any previous global or private variable of the same name
 LOCAL nHnd, nResult                 && Local variables are visible only here

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

 * Enter a loop so we can exit to the close connection code if there's an error
 DO WHILE .T.
     * Execute a SQL command
     nResult = SQLEXEC (nHnd, "USE master")
     IF nResult < 0
         MESSAGEBOX ("MASTER database does not exist!")
         EXIT  && To close the connection
     ENDIF

     * Retrieve data from the remote server and stores it in a local data cursor
     nResult = SQLEXEC (nHnd, "SELECT * FROM authors", "QAUTHORS")
     IF nResult < 0
         MESSAGEBOX ("Unable to execute remote SQL SELECT command!")
         EXIT  && To close the connection
     ENDIF

     * Update a record in a remote table using parameters
     cAuthorID     = "1001"
     cAuthorName   = "New name"
     nResult       = SQLEXEC (nHnd, "UPDATE authors SET auth_name = ?cAuthorName WHERE auth_id = ?cAuthorID")
     IF nResult < 0
         MESSAGEBOX ("Unable to execute remote SQL UPDATE command!")
         EXIT  && To close the connection
     ENDIF

     * If we get here, we have retrieved everything successfully
     EXIT  && Exit unconditionally
 ENDDO

 * Close the connection
 SQLDISCONNECT(nHnd)

Aplicaciones

Algunas aplicaciones notables escritas en Visual FoxPro incluyen

  • PWCT : lenguaje de programación visual de código abierto gratuito para el desarrollo de software

Ver también

Referencias

enlaces externos

Páginas de Microsoft

Otras paginas