Visual FoxPro - Visual FoxPro

Visual FoxPro
VisualFoxProScreenshot.png
Visual FoxPro v9 kjører på Windows XP
Utvikler (er) Microsoft
Endelig utgivelse
v9.0 SP2 / 16. oktober 2007 ; For 13 år siden ( 2007-10-16 )
Operativsystem Windows 2000 , Windows XP og Windows Server 2003
Plattform IA-32
Tilgjengelig i IDE: engelsk, tysk, spansk
kjøretid: over pluss fransk, kinesisk, russisk, tsjekkisk, koreansk
Type Integrert utviklingsmiljø , programmeringsspråk
Tillatelse Kommersiell programvare
Nettsted msdn .microsoft .com / vfoxpro

Visual FoxPro var et Microsoft datasentrisk prosessuelt programmeringsspråk som senere ble objektorientert .

Den ble hentet fra FoxPro (opprinnelig kjent som FoxBASE) som ble utviklet av Fox Software fra og med 1984. Fox Technologies fusjonerte med Microsoft i 1992, hvoretter programvaren fikk flere funksjoner og prefikset "Visual". FoxPro 2.6 jobbet på Mac OS , DOS , Windows og Unix .

Visual FoxPro 3.0, den første "Visual" -versjonen, reduserte plattformstøtten til bare Mac og Windows, og senere versjoner 5, 6, 7, 8 og 9 var bare Windows. Den nåværende versjonen av Visual FoxPro er COM- basert og Microsoft har uttalt at de ikke har tenkt å lage en Microsoft .NET- versjon.

Versjon 9.0, utgitt i desember 2004 og oppdatert i oktober 2007 med SP2-oppdateringen, var den endelige versjonen av produktet.

Historie

Visual FoxPro stammer fra et medlem av klassen av språk som ofte kalles " xBase " -språk , som har syntaks basert på programmeringsspråket dBase . Andre medlemmer av xBase-språkfamilien inkluderer Clipper og Recital (database).

Visual FoxPro, ofte forkortet som VFP, er tett integrert med sin egen relasjonelle databasemotor, som utvider FoxPros xBase-muligheter for å støtte SQL- spørring og databehandling. I motsetning til de fleste databasesystemer , er Visual FoxPro et dynamisk programmeringsspråk med full funksjoner som ikke krever bruk av et ekstra programmeringsmiljø for generell bruk. Den kan brukes til å skrive ikke bare tradisjonelle " fat client " -applikasjoner, men også mellomvare og webapplikasjoner .

I slutten av 2002 ble det demonstrert at Visual FoxPro kan kjøre på Linux under Wine Windows-kompatibilitetspakken. I 2003 førte dette til klager fra Microsoft: det ble hevdet at distribusjonen av runtime FoxPro-kode på ikke-Windows-maskiner bryter lisensavtalen for sluttbrukere .

Visual FoxPro hadde en rask økning og nedgang i popularitet målt ved TIOBE Programming Community Index . I desember 2005 brøt VFP inn på topp 20 for første gang. I juni 2006 nådde den topplassering 12, og gjorde den (på den tiden) til et "B" -språk. Per oktober 2019 har Visual FoxPro posisjon 51 på TIOBE-indeksen.

I mars 2007 kunngjorde Microsoft at det ikke vil være noen VFP 10, og dermed blir VFP9 (utgitt til produksjon 17. desember 2004) den siste kommersielle VFP-utgivelsen fra Microsoft. Service Pack 2 for Microsoft Visual FoxPro 9.0 ble utgitt 16. oktober 2007. Støtten til versjon 9 ble avsluttet 13. januar 2015.

På tidspunktet for livets kunngjøring var arbeidet med neste utgivelse med kodenavnet Sedna (oppkalt etter en nylig oppdaget dvergplanet ) som ble bygget på toppen av VFP9-kodebasen, allerede begynt. "Sedna" er et sett med tillegg til VFP 9.0 av xBase-komponenter for å støtte en rekke interoperabilitetsscenarier med forskjellige Microsoft-teknologier, inkludert SQL Server 2005, .NET Framework , Windows Vista, Office 2007, Windows Search og Team Foundation Server (TFS ). Microsoft ga ut Sedna under den delte kildelisensenCodePlex- nettstedet. Microsoft har avklart at VFP-kjernen fortsatt vil være lukket kilde. Sedna ble utgitt 25. januar 2008. Per mars 2008 var alle xBase-komponentene i VFP 9 SP2 (inkludert Sedna) tilgjengelig for utvikling av samfunnet på CodePlex.

I slutten av mars 2007 startet en grasrotkampanje av det spansktalende FoxPro-samfunnet på MásFoxPro ("MoreFoxPro" på engelsk ) for å signere en petisjon til Microsoft for å fortsette å oppdatere Visual FoxPro eller frigjøre den til samfunnet som åpen kildekode . 3. april 2007 ble bevegelsen notert av teknisk presse.

3. april 2007 svarte Microsoft på begjæringen med denne uttalelsen fra Alan Griver:

"Vi er veldig bevisste på FoxPro-samfunnet, og det spilte en stor rolle i det vi kunngjorde 13. mars. Det er aldri en enkel beslutning å kunngjøre at vi ikke kommer til å gi ut en ny versjon av et produkt, og det er en som vi vurderer veldig forsiktig.

"Vi kunngjør ikke slutten på FoxPro: Åpenbart vil FoxPro-applikasjoner fortsette å fungere. Av noen av våre interne estimater er det flere applikasjoner som kjører i FoxPro 2.6 enn det er i VFP, og FoxPro 2.6 har ikke blitt støttet på mange Visual FoxPro 9 vil bli støttet av Microsoft gjennom 2015.

"For at Microsoft skal fortsette å utvikle FoxPro-basen, må vi se på å skape et 64-biters utviklingsmiljø, og det vil innebære en nesten fullstendig omskrivning av kjerneproduktet. Vi har også investert i å lage en skalerbar database med SQL Server , inkludert den fritt tilgjengelige SQL Server Express Edition. Når det gjelder å danne et partnerskap med en tredjepart, har vi hørt fra en rekke store FoxPro-kunder at dette ville gjøre det umulig for dem å fortsette å bruke FoxPro siden det ville ikke lenger være fra en godkjent leverandør. Vi følte at å sette miljøet i åpen kildekode på CodePlex , som balanserer behovene til både samfunnet og de store kundene, var den beste veien videre. "

Versjonstidslinje

Alle versjonene som er oppført er for Windows.

Versjon Utgivelsesdato
Visual FoxPro 3.0 Juni 1995
Visual FoxPro 5.0 Oktober 1996
Visual FoxPro 5.0a Oktober 1997
Visual FoxPro 6.0 18. mai 1998
Visual FoxPro 7.0 27. juni 2001
Visual FoxPro 8.0 1. februar 2003
Visual FoxPro 8.0 Service Pack 1 7. oktober 2003
Visual FoxPro 9 20. desember 2004
Visual FoxPro 9 Service Pack 1 8. desember 2005
Visual FoxPro 9 Service Pack 2 16. oktober 2007

Kode eksempler

FoxPro-språket inneholder kommandoer som er ganske like andre programmeringsspråk som Basic.

Noen grunnleggende syntakseksempler:

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

Hello World eksempler:

 * 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")

Gjenstand

Produksjon av Hello World- programmet.
* 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 har et omfattende bibliotek med forhåndsdefinerte klasser og visuelle objekter som er tilgjengelig i IDE av et eiendomsark (inkludert metoder ), så kode som de ovenfor definerende klassene og objektene er bare nødvendig for spesielle formål og rammeverket for store systemer.

Data håndtering

Språket har også omfattende databasemanipulering og indekseringskommandoer. "Hjelp" -indeksen for kommandoer i VFP 9 har flere hundre kommandoer og funksjoner beskrevet. Eksemplene nedenfor viser hvordan du koder for opprettelse og indeksering av tabeller, men VFP har skjermbilder for tabell- og databasebygger som lager tabellene og indeksene uten å få deg til å skrive kode.

Utdata fra datahåndteringsprogrammet .
 * 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

ODBC-tilgang ved bruk av SQL-gjennomgang

 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)

applikasjoner

Noen bemerkelsesverdige applikasjoner skrevet i Visual FoxPro inkluderer

  • PWCT : gratis open source visuelt programmeringsspråk for programvareutvikling

Se også

Referanser

Eksterne linker

Microsoft-sider

Andre sider