Visual FoxPro
Visual FoxPro linguaggio di programmazione | |
---|---|
Autore | Microsoft |
Data di origine | 1984 |
Ultima versione | 9.0 del 16 ottobre 2007 |
Paradigmi | programmazione orientata agli oggetti e programmazione procedurale |
Influenzato da | FoxPro |
Implementazione di riferimento | |
Sistema operativo | Microsoft Windows |
Sito web | msdn.microsoft.com/vfoxpro |
Modifica dati su Wikidata · Manuale |
Visual FoxPro (VFP) è un linguaggio di programmazione che integra la programmazione di tipo procedurale e quella orientata agli oggetti. È pubblicato da Microsoft per Windows.
Storia
Il linguaggio deriva da FoxPro che è stato sviluppato da Fox Technologies agli inizi del 1984. L'ultima versione di FoxPro (2.6) era compatibile con i sistemi operativi Mac OS, DOS, Windows e Unix. Nel 1992 Fox Technologies è stata acquisita da Microsoft. Da allora il nome del linguaggio è diventato Visual FoxPro. La prima versione di Visual FoxPro (3.0), supportava i sistemi operativi Mac e Windows. La versione attuale supporta solo i sistemi operativi Windows.
L'ultima versione pubblicata da Microsoft è Visual FoxPro 9.0 del 2004.
Nel marzo 2007 Microsoft ha annunciato la decisione di interrompere lo sviluppo di Visual FoxPro consentendo alla comunità di portarne avanti lo sviluppo successivo. Ha comunque fornito il supporto tecnico standard sino al 2010 e il supporto esteso sino al 2015.
Caratteristiche
Esempi di codice
Il linguaggio FoxPro contiene comandi simili ad altri linguaggi di programmazione quali il Basic.
Alcuni esempi di comandi base:
FOR i = 1 to 10 x = x + 6.5 NEXT && Al posto di "NEXT" si può usare anche "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 && Anche qui si può usare "ENDFOR" al posto di "NEXT" RETURN r ENDFUNC
Esempi Hello World:
* Stampa alla locazione corrente ? "Hello World" * Stampa in una specifica locazione @ 1,1 SAY "Hello World" * Stampa in una finestra differente WAIT WINDOW "Hello World" * Stampa in un dialog box standard, cancellato all'OK MESSAGEBOX("Hello World")
Oggetti
* Stampa in una finestra specifica 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 && Questo funziona (la doppia e commerciale indica un commento fino a fine riga) ? loMine.cProp2 && Errore: la proprietà CPROP2 è nascosta esternamente. ? loMine.MyMethod1() && Questo funziona ? loMine.MyMethod2() && Errore: la proprietà MYMETHOD2 è nascosta esternamente. DEFINE CLASS MyClass AS Custom cProp1 = "My Property" && Questa è una proprietà pubblica HIDDEN cProp2 && Questa è una proprietà privata (nascosta) dProp3 = {} && Un'altra proprietà pubblica PROCEDURE Init() && Costruttore della classe This.cProp2 = "This is a hidden property." PROCEDURE dProp3_Access && Il Getter è identificato dal tag "_Access" nel nome RETURN DATE() PROCEDURE dProp3_Assign(vNewVal) && Il Setter è identificato da tag "_Assign" nel nome IF VARTYPE(vNewVal) = "D" THIS.dProp3 = vNewVal ENDIF PROCEDURE MyMethod1() * Metodo pubblico che chiama un metodo nascosto che restituisce * il valore di una proprietà nascosta. RETURN This.MyMethod2() HIDDEN PROCEDURE MyMethod2() && Questo è un metodo privato (nascosto) RETURN This.cProp2 ENDDEFINE
- VFP ha una libreria estesa di classi predefinite ed oggetti visuali che sono accessibili nel IDE da un foglio di proprietà (inclusi i Metodi),[1] in modo che sia necessario scrivere un codice completo che definisca una classe ed i suoi oggetti solamente in casi molto particolari e la scrittura di framework di grandi sistemi.
Gestione dei Dati
Il linguaggio offre un nutrito gruppo di comandi dedicati alla manipolazione di un database. L'indice dei comandi in VFP9 accessibile dal menù "Aiuto" contiene centinaia e centinaia di comandi e funzioni. Gli esempi in basso mostrano come scrivere codice per la creazione e l'indicizzazione di tabelle, comunque VFP ha schermate di creazione visuale di tabelle e database che creano tutto senza la necessità di scrivere codice.
* Crea una tabella CREATE TABLE randData (iData I) * Popola con dati random usando xBase e comandi SQL DML FOR i = 1 TO 50 APPEND BLANK REPLACE iData WITH (RAND() * 100) INSERT INTO randData (iData) VALUES (RAND() * 100) ENDFOR * Crea un indice sui dati INDEX ON iData TAG iData CLOSE DATA && Chiude la tabella * Mostra dati ordinati usando comandi in stile xBase USE randData SET ORDER TO iData LOCATE && Al posto di GO TOP. Forza l'uso di indici per trovare TOP LIST NEXT 10 && I primi 10 GO BOTTOM SKIP -10 LIST REST && Gli ultimi 10 CLOSE DATA * Seleziona i dati ordinati usando i comandi SQL DML SELECT * ; FROM randData ; ORDER BY iData DESCENDING
Accesso ODBC usando SQL passthrough
PRIVATE cAuthorID, cAuthorName && Variabili private che ridefiniscono eventuali precedenti variabili globali i private con lo stesso nome LOCAL nHnd, nResult && Variabili locali visibili solo in questa sezione * Connessione ad una sorgente ODBC nHnd = SQLCONNECT ("ODBCDSN", "user", "pwd") * Ciclo infinito (l'uscita viene forzata nel codice in caso di errore o al termine delle operazioni) DO WHILE .T. * Esegue un comando SQL nResult = SQLEXEC (nHnd, "USE master") IF nResult < 0 MESSAGEBOX ("MASTER database does not exist!") EXIT && Esce dal ciclo ENDIF * Recupera i dati dal server remoto e li inserisce nel cursore locale nResult = SQLEXEC (nHnd, "SELECT * FROM authors", "QAUTHORS") IF nResult < 0 MESSAGEBOX ("Unable to execute remote SQL SELECT command!") EXIT && Esce dal ciclo ENDIF * Aggiorna un record nella tabella remota usando una query parametrica 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 && Esce dal ciclo ENDIF * Se arriva a questo punto, abbiamo effettuato tutti i passaggi correttamente EXIT && Esce dal ciclo incondizionatamente ENDDO * Chiude la connessione SQLDISCONNECT(nHnd)
Note
- ^ Visual FoxPro Development Productivity Tools, su msdn.microsoft.com, Microsoft. URL consultato il 20 dicembre 2014.
Bibliografia
- Microsoft Visual Fox Pro 3.0 (JPG), in MCmicrocomputer, n. 149, Roma, Technimedia, marzo 1995, pp. 186-187, ISSN 1123-2714 (WC · ACNP).
Collegamenti esterni
- Sito ufficiale, su msdn.microsoft.com.
- La storia di FoxPro (in inglese)
V · D · M | |
---|---|
ABAP · Ada · ALGOL · APL · Assembly · Awk · BASIC · C · C++ · C# · COBOL · Delphi · Eiffel · Fortran · F# · Haskell · IDL · Java · JavaScript · J# · Lisp · LOGO · Lua · ML · Objective-C · OCaml · Pascal · Perl · PHP · PL/I · PLaSM · Prolog · Python · Ruby · Rust · SAS · Scheme · sh · Simula · Smalltalk · SQL · Swift · Visual Basic |