Visual FoxPro: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Bot: Aggiungo: tg:Visual FoxPro |
Nessun oggetto della modifica |
||
(34 versioni intermedie di 26 utenti non mostrate) | |||
Riga 1:
{{Linguaggio di programmazione
|nome =
|immagine = Foxpro-icon.png
|didascalia =
|data =
|versione = 9.0 del 16 ottobre 2007
|utilizzo =
|tipizzazione =
|specifiche =
|estensione =
|influenzato_da = [[FoxPro]]
|ha_influenzato =
|implementazione_riferimento =
|sistema_operativo = [[Microsoft Windows]]
|lingua =
|licenza =
}}
'''Visual FoxPro''' (VFP) è un [[linguaggio di programmazione]] che integra la programmazione di tipo procedurale e quella orientata agli oggetti. È pubblicato da [[Microsoft]] per [[Microsoft Windows|Windows]].
== Storia ==
Il linguaggio deriva da [[FoxPro 2|FoxPro]] che è stato sviluppato da [[Fox Technologies]] agli inizi del [[1984]].
Nel [[1992]
La prima versione di Visual FoxPro (
Nel marzo 2007 Microsoft ha annunciato la decisione di interrompere lo sviluppo di
== Caratteristiche ==
{{...|informatica}}
== Esempi di codice ==
Il linguaggio FoxPro contiene comandi simili ad altri linguaggi di programmazione quali il Basic.
Alcuni esempi di comandi base:
<syntaxhighlight lang="visualfoxpro">
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
</syntaxhighlight>
Esempi Hello World:
<syntaxhighlight lang="visualfoxpro">
* 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")
</syntaxhighlight>
=== Oggetti ===
<syntaxhighlight lang="visualfoxpro">
* 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
</syntaxhighlight>
<syntaxhighlight lang="visualfoxpro">
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
</syntaxhighlight>
* VFP ha una libreria estesa di classi predefinite ed oggetti visuali che sono accessibili nel [[Ambiente di sviluppo integrato|IDE]] da un foglio di proprietà (inclusi i [[Metodo (programmazione)|Metodi]]),<ref>{{Cita web|titolo=Visual FoxPro Development Productivity Tools|url=http://msdn.microsoft.com/en-US/library/4x2ecwzz%28v=vs.80%29.aspx/|editore=Microsoft|accesso=20 dicembre 2014}}</ref> 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.
<syntaxhighlight lang="visualfoxpro">
* 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
</syntaxhighlight>
=== Accesso ODBC usando SQL passthrough ===
<syntaxhighlight lang="visualfoxpro">
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)
</syntaxhighlight>
== Note ==
<references/>
== Bibliografia ==
* {{RivistaVG|mc|149|186-187|3|1995|titolo=Microsoft Visual Fox Pro 3.0}}
== Collegamenti esterni ==
* {{Collegamenti esterni}}
*[http://www.foxprohistory.org/ La storia di FoxPro] (in inglese)
{{Portale|informatica}}
{{Principali linguaggi di programmazione}}
[[Categoria:Linguaggi di programmazione orientati agli oggetti]]
|