Visual FoxPro - Visual FoxPro
Utvecklare | Microsoft |
---|---|
Slutlig utgåva | v9.0 SP2 / 16 oktober 2007
|
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 |
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
* 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.
* 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
- Visual FoxPro Wiki Ett arkiv med FoxPro-information (skrivet i VFP)
- En webbplats som ägnas åt FoxPros historia
- VFPx En Visual FoxPro Community-insats för att skapa tillägg för öppen källkod för VFP 9.0