Visual FoxPro - Visual FoxPro

Visual FoxPro
VisualFoxProScreenshot.png
Visual FoxPro v9 körs på Windows XP
Utvecklare Microsoft
Slutlig utgåva
v9.0 SP2 / 16 oktober 2007 ; För 13 år sedan ( 2007-10-16 )
Operativ system Windows 2000 , Windows XP och Windows Server 2003
Plattform IA-32
Tillgänglig i IDE: engelska, tyska, spanska
körtid: ovan plus franska, kinesiska, ryska, tjeckiska, koreanska
Typ Integrerad utvecklingsmiljö , programmeringsspråk
Licens Kommersiell programvara
Hemsida msdn .microsoft .com / vfoxpro

Visual FoxPro var ett Microsoft datacentrerat procedurellt programmeringsspråk som sedan blev objektorienterat .

Den härstammar från FoxPro (ursprungligen känd som FoxBASE) som utvecklades av Fox Software från och med 1984. Fox Technologies slogs samman med Microsoft 1992, varefter mjukvaran fick ytterligare funktioner och prefixet "Visual". FoxPro 2.6 fungerade på Mac OS , DOS , Windows och Unix .

Visual FoxPro 3.0, den första "Visual" -versionen, reducerade plattformsstödet till endast Mac och Windows, och senare versioner 5, 6, 7, 8 och 9 var endast Windows. Den nuvarande versionen av Visual FoxPro är COM- baserad och Microsoft har uppgett att de inte tänker skapa en Microsoft .NET- version.

Version 9.0, släppt i december 2004 och uppdaterad i oktober 2007 med SP2-patch, var den slutliga versionen av produkten.

Historia

Visual FoxPro härstammar från en medlem av klassen av språk som vanligtvis kallas " xBase " -språk , som har syntax baserat på dBase- programmeringsspråket. Andra medlemmar i xBase-språkfamiljen inkluderar Clipper och Recital (databas).

Visual FoxPro, vanligtvis förkortat som VFP, är tätt integrerat med sin egen relationsdatabasmotor, som utökar FoxPros xBase-funktioner för att stödja SQL- fråga och datain manipulation. Till skillnad från de flesta databashanteringssystem är Visual FoxPro ett dynamiskt programmeringsspråk med full funktionalitet som inte kräver användning av ytterligare en allmän programmeringsmiljö. Den kan användas för att skriva inte bara traditionella " fettklient " -applikationer utan även mellanprogram och webbapplikationer .

I slutet av 2002 demonstrerades att Visual FoxPro kan köras på Linux under kompatibilitetssviten Wine Windows. 2003 ledde detta till klagomål från Microsoft: det hävdades att distributionen av FoxPro-kod för runtime på maskiner som inte är Windows bryter mot licensavtalet för slutanvändare .

Visual FoxPro hade en snabb ökning och nedgång i popularitet mätt med TIOBE Programming Community Index . I december 2005 bröt VFP in för topp 20 för första gången. I juni 2006 nådde det toppläge 12, vilket gjorde det (vid den tiden) till ett "B" -språk. Från och med oktober 2019 innehar Visual FoxPro position 51 i TIOBE-indexet.

I mars 2007 meddelade Microsoft att det inte kommer att finnas någon VFP 10, vilket gör VFP9 (släppt till tillverkning den 17 december 2004) till den senaste kommersiella VFP-utgåvan från Microsoft. Service Pack 2 för Microsoft Visual FoxPro 9.0 släpptes den 16 oktober 2007. Support för version 9 slutade den 13 januari 2015.

Vid tidpunkten för livets tillkännagivande hade arbetet med nästa release med kodnamnet Sedna (uppkallat efter en nyligen upptäckt dvärgplanet ) som byggdes ovanpå VFP9-kodbasen redan börjat. "Sedna" är en uppsättning tillägg till VFP 9.0 av xBase-komponenter för att stödja ett antal interoperabilitetsscenarier med olika Microsoft-teknologier inklusive SQL Server 2005, .NET Framework , Windows Vista, Office 2007, Windows Search och Team Foundation Server (TFS ). Microsoft släppte Sedna under Shared source- licensen på CodePlex- webbplatsen. Microsoft har förtydligat att VFP-kärnan fortfarande kommer att förbli sluten källa. Sedna släpptes den 25 januari 2008. Från och med mars 2008 var alla xBase-komponenter i VFP 9 SP2 (inklusive Sedna) tillgängliga för community-utveckling på CodePlex.

I slutet av mars 2007 startade en gräsrotskampanj av den spansktalande FoxPro-gruppen på MásFoxPro ("MoreFoxPro" på engelska ) för att underteckna en framställning till Microsoft för att fortsätta uppdatera Visual FoxPro eller släppa den till samhället som öppen källkod . Den 3 april 2007 noterades rörelsen av den tekniska pressen.

Den 3 april 2007 svarade Microsoft på framställningen med detta uttalande från Alan Griver:

"Vi är mycket medvetna om FoxPro-communityn och det spelade en stor roll i det vi meddelade den 13 mars. Det är aldrig ett enkelt beslut att meddela att vi inte kommer att släppa en ny version av en produkt och det är en som vi anser väldigt försiktigt.

"Vi tillkännager inte slutet på FoxPro: Uppenbarligen kommer FoxPro-applikationer att fortsätta att fungera. Enligt några av våra interna uppskattningar finns det fler applikationer som körs i FoxPro 2.6 än det finns i VFP och FoxPro 2.6 har inte fått stöd i många Visual FoxPro 9 kommer att stödjas av Microsoft fram till 2015.

"För att Microsoft ska kunna fortsätta utveckla FoxPro-basen måste vi titta på att skapa en 64-bitars utvecklingsmiljö och det skulle innebära en nästan fullständig omskrivning av kärnprodukten. Vi har också investerat i att skapa en skalbar databas med SQL Server , inklusive den fritt tillgängliga SQL Server Express Edition. När det gäller att bilda ett partnerskap med en tredje part har vi hört från ett antal stora FoxPro-kunder att detta skulle göra det omöjligt för dem att fortsätta använda FoxPro eftersom det skulle inte längre vara från en godkänd leverantör. Vi ansåg att det var den bästa vägen framåt att sätta miljön i öppen källkod på CodePlex , som balanserar behoven hos både samhället och de stora kunderna. "

Versionens tidslinje

Alla versioner som anges är för Windows.

Version Utgivningsdatum
Visual FoxPro 3.0 Juni 1995
Visual FoxPro 5.0 Oktober 1996
Visual FoxPro 5.0a Oktober 1997
Visual FoxPro 6.0 18 maj 1998
Visual FoxPro 7.0 27 juni 2001
Visual FoxPro 8.0 1 februari 2003
Visual FoxPro 8.0 Service Pack 1 7 oktober 2003
Visual FoxPro 9 20 december 2004
Visual FoxPro 9 Service Pack 1 8 december 2005
Visual FoxPro 9 Service Pack 2 16 oktober 2007

Kodprover

FoxPro-språket innehåller kommandon som liknar andra programmeringsspråk som Basic.

Några grundläggande syntaxprover:

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-exempel:

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

Objekt

Produktion 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 ett omfattande bibliotek med fördefinierade klasser och visuella objekt som nås i IDE av ett fastighetsblad (inklusive metoder ), så kod som ovanstående definierande klasser och objekt behövs bara för speciella ändamål och ramarna för stora system.

Data hantering

Språket har också omfattande kommandon för databashantering och indexering. "Hjälp" -indexet för kommandon i VFP 9 har flera hundra kommandon och funktioner som beskrivs. Exemplen nedan visar hur man kodar skapandet och indexeringen av tabeller, men VFP har skärmar för tabell- och databasbyggare som skapar tabeller och index utan att få dig att skriva kod.

Utdata från datahanteringsprogrammet .
 * 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-åtkomst med SQL-genomströmning

 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)

Applikationer

Några anmärkningsvärda applikationer skrivna i Visual FoxPro inkluderar

  • PWCT : gratis visuellt programmeringsspråk med öppen källkod för mjukvaruutveckling

Se även

Referenser

externa länkar

Microsoft-sidor

Andra sidor