Visual FoxPro - Visual FoxPro

Z Wikipedii, wolnej encyklopedii
Visual FoxPro
VisualFoxProScreenshot.png
Visual FoxPro v9 działający w systemie Windows XP
Deweloper (y) Microsoft
Wersja ostateczna
wersja 9.0 SP2 / 16 października 2007 ; 13 lat temu  ( 2007-10-16 )
System operacyjny Windows 2000 , Windows XP i Windows Server 2003
Platforma IA-32
Dostępne w IDE: angielski, niemiecki, hiszpański
Środowisko wykonawcze: powyżej oraz francuski, chiński, rosyjski, czeski, koreański
Rodzaj Zintegrowane środowisko programistyczne , język programowania
Licencja Własne oprogramowanie komercyjne
Stronie internetowej msdn .microsoft .com / vfoxpro

Visual FoxPro był proceduralnym językiem programowania firmy Microsoft zorientowanym na dane, który następnie stał się zorientowany obiektowo .

Wywodzi się z FoxPro (pierwotnie znanego jako FoxBASE), który został opracowany przez Fox Software od 1984 roku. Fox Technologies połączyło się z Microsoftem w 1992 roku, po czym oprogramowanie uzyskało dodatkowe funkcje i przedrostek „Visual”. FoxPro 2.6 działał w systemach Mac OS , DOS , Windows i Unix .

Visual FoxPro 3.0, pierwsza wersja „Visual”, ograniczyła obsługę platformy tylko do komputerów Mac i Windows, a późniejsze wersje 5, 6, 7, 8 i 9 były dostępne tylko dla systemu Windows. Obecna wersja programu Visual FoxPro jest oparta na modelu COM i Microsoft oświadczył, że nie zamierza tworzyć wersji Microsoft .NET .

Wersja 9.0, wydana w grudniu 2004 r. I zaktualizowana w październiku 2007 r. Poprawką SP2, była ostateczną wersją produktu.

Historia

Visual FoxPro powstał jako członek klasy języków powszechnie określanych jako języki „ xBase ”, które mają składnię opartą na języku programowania dBase . Inni członkowie rodziny języków xBase to Clipper i Recital (baza danych).

Visual FoxPro, powszechnie w skrócie VFP, jest ściśle zintegrowany z własnym silnikiem relacyjnej bazy danych, który rozszerza możliwości FoxPro xBase o obsługę zapytań SQL i manipulacji danymi. W przeciwieństwie do większości systemów zarządzania bazami danych , Visual FoxPro jest w pełni funkcjonalnym, dynamicznym językiem programowania , który nie wymaga użycia dodatkowego środowiska programowania ogólnego przeznaczenia. Może być używany do pisania nie tylko tradycyjnych aplikacji „ grubego klienta ”, ale także oprogramowania pośredniego i aplikacji internetowych .

Pod koniec 2002 roku wykazano, że Visual FoxPro może działać na Linuksie z pakietem kompatybilności Wine Windows. W 2003 r. Doprowadziło to do skarg firmy Microsoft: twierdzono, że wdrożenie kodu środowiska wykonawczego FoxPro na komputerach z systemem innym niż Windows narusza Umowę licencyjną użytkownika końcowego .

Popularność Visual FoxPro szybko rosła i spadała, mierząc indeks społeczności programistycznej TIOBE . W grudniu 2005 roku firma VFP po raz pierwszy znalazła się w pierwszej dwudziestce. W czerwcu 2006 roku osiągnął szczyt na pozycji 12, co czyni go (w tamtym czasie) językiem „B”. Od października 2019 roku Visual FoxPro zajmuje 51 pozycję w indeksie TIOBE.

W marcu 2007 roku Microsoft ogłosił, że nie będzie VFP 10, dzięki czemu VFP9 (wprowadzony do produkcji 17 grudnia 2004) będzie ostatnim komercyjnym wydaniem VFP firmy Microsoft. Dodatek Service Pack 2 dla programu Microsoft Visual FoxPro 9.0 został wydany 16 października 2007 r. Wsparcie dla wersji 9 zakończyło się 13 stycznia 2015 r.

W momencie ogłoszenia końca życia, prace nad kolejnym wydaniem o nazwie kodowej Sedna (nazwanej na cześć niedawno odkrytej planety karłowatej ), które zostało zbudowane na bazie kodu VFP9, już się rozpoczęły. „Sedna” to zestaw dodatków do VFP 9.0 składników xBase obsługujących szereg scenariuszy współdziałania z różnymi technologiami firmy Microsoft, w tym SQL Server 2005, .NET Framework , Windows Vista, Office 2007, Windows Search i Team Foundation Server (TFS ). Microsoft wypuścił Sednę na licencji Shared source w witrynie CodePlex . Microsoft wyjaśnił, że rdzeń VFP nadal pozostanie zamkniętym źródłem. Sedna została wydana 25 stycznia 2008 r. Od marca 2008 r. Wszystkie komponenty xBase VFP 9 SP2 (w tym Sedna) były dostępne do tworzenia przez społeczność w CodePlex.

Pod koniec marca 2007 r. Hiszpańskojęzyczna społeczność FoxPro w MásFoxPro („MoreFoxPro” w języku angielskim ) rozpoczęła oddolną kampanię w celu podpisania petycji do firmy Microsoft, aby kontynuować aktualizację programu Visual FoxPro lub udostępnić ją społeczności jako oprogramowanie open source . 3 kwietnia 2007 r. Ruch został odnotowany przez prasę techniczną.

W dniu 3 kwietnia 2007 r. Firma Microsoft odpowiedziała na petycję następującym oświadczeniem Alana Grivera:

„Jesteśmy bardzo świadomi społeczności FoxPro i odegrała ona dużą rolę w tym, co ogłosiliśmy 13 marca. Nie jest łatwo ogłosić, że nie zamierzamy wydać kolejnej wersji produktu, a rozważamy tę bardzo ostrożnie.

„Nie ogłaszamy końca FoxPro: oczywiście aplikacje FoxPro będą nadal działać. Według niektórych naszych wewnętrznych szacunków, w FoxPro 2.6 działa więcej aplikacji niż w VFP, a FoxPro 2.6 nie był obsługiwany w wielu Visual FoxPro 9 będzie obsługiwany przez Microsoft do 2015 roku.

„Aby firma Microsoft mogła kontynuować ewolucję bazy FoxPro, musielibyśmy zająć się stworzeniem 64-bitowego środowiska programistycznego, co wymagałoby prawie całkowitego przepisania podstawowego produktu. Zainwestowaliśmy również w stworzenie skalowalnej bazy danych za pomocą SQL Server , w tym bezpłatną wersję SQL Server Express Edition. Jeśli chodzi o nawiązywanie partnerstwa ze stroną trzecią, od wielu dużych klientów FoxPro słyszeliśmy, że uniemożliwiłoby im to dalsze korzystanie z FoxPro, ponieważ nie będzie już pochodzić od zatwierdzonego dostawcy. Uznaliśmy, że umieszczenie środowiska w oprogramowaniu typu open source w CodePlex , które równoważy potrzeby zarówno społeczności, jak i dużych klientów, było najlepszą drogą naprzód ”.

Oś czasu wersji

Wszystkie wymienione wersje dotyczą systemu Windows.

Wersja Data wydania
Visual FoxPro 3.0 Czerwiec 1995
Visual FoxPro 5.0 Październik 1996
Visual FoxPro 5.0a Październik 1997
Visual FoxPro 6.0 18 maja 1998
Visual FoxPro 7.0 27 czerwca 2001
Visual FoxPro 8.0 1 lutego 2003 r
Dodatek Service Pack 1 dla programu Visual FoxPro 8.0 07 października 2003
Visual FoxPro 9 20 grudnia 2004
Dodatek Service Pack 1 dla programu Visual FoxPro 9 08 grudnia 2005
Dodatek Service Pack 2 dla programu Visual FoxPro 9 16 października 2007

Próbki kodu

Język FoxPro zawiera polecenia bardzo podobne do innych języków programowania, takich jak Basic.

Kilka podstawowych przykładów składni:

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

Przykłady 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")

Obiekt

Wyjście programu 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 ma obszerną bibliotekę predefiniowanych klas i obiektów wizualnych, do których dostęp w środowisku IDE uzyskuje się za pomocą arkusza właściwości (w tym metod ), więc kod taki jak powyżej definiujące klasy i obiekty jest potrzebny tylko do specjalnych celów i szkieletu dużych systemów.

Przetwarzanie danych

Język ma również obszerne polecenia do manipulacji i indeksowania bazy danych. Indeks „pomocy” poleceń w VFP 9 zawiera kilkaset opisanych poleceń i funkcji. Poniższe przykłady pokazują, jak kodować tworzenie i indeksowanie tabel, jednak VFP ma ekrany konstruktora tabel i baz danych, które tworzą tabele i indeksy bez konieczności pisania kodu.

Wyjście programu obsługi danych .
 * 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

Dostęp ODBC za pomocą SQL passthrough

 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)

Aplikacje

Niektóre godne uwagi aplikacje napisane w Visual FoxPro obejmują

  • PWCT : darmowy wizualny język programowania open source do tworzenia oprogramowania

Zobacz też

Bibliografia

Linki zewnętrzne

Strony Microsoft

Inne strony