Visual FoxPro: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
WikitanvirBot (discussione | contributi)
m r2.7.1) (Bot: Aggiungo: ko:FoxPro
Nessun oggetto della modifica
 
(28 versioni intermedie di 21 utenti non mostrate)
Riga 1:
{{Linguaggio di programmazione
'''Visual FoxPro''' (VFP) è un linguaggio di programmazione che integra la programmazione di tipo procedurale e quella orientata agli oggetti. È pubblicato da [[Microsoft]], per [[MS Windows]]
|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]].
L’ultimaL'ultima versione di [[FoxPro 2|FoxPro (2.6)]] era compatibile con i sistemi operativi [[Mac OS]], [[DOS]], [[Microsoft Windows|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 solo i sistemi operativi Mac e Windows. La versione attuale supporta solo i sistemi operativi Windows.
 
L’ultimaL'ultima versione pubblicata da Microsoft è Visual FoxPro 9.0 del 2004.
 
Nel marzo 2007 Microsoft ha annunciato la decisione di interrompere lo sviluppo di visualVisual 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 ==
Microsoft assicura, comunque, che fornirà il supporto tecnico standard sino al 2010 e il supporto esteso sino al 2015.
{{...|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 ==
* [http://www.foxitaly.com/ User Group Italiano ]
* [http://www.vfug.org/ Virtual FoxPro User Group] (in inglese)
* [http://www.foxprohistory.org/ La storia di FoxPro] ( in inglese)
* [http://www.universalthread.com/Report.aspx?Session=6633617A53617371576A493D20476E7430355250344D4843734336516C30675231585253714C555579344A5955 User-Defined Funzioni FoxPro] ( in inglese)
 
* {{Collegamenti esterni}}
{{Principali linguaggi di programmazione}}
*[http://www.foxprohistory.org/ La storia di FoxPro] (in inglese)
 
{{Portale|informatica}}
[[Categoria:Linguaggi di programmazione]]
{{Principali linguaggi di programmazione}}
 
[[Categoria:Linguaggi di programmazione orientati agli oggetti]]
[[ca:Visual FoxPro]]
[[cs:Visual FoxPro]]
[[de:Microsoft Visual FoxPro]]
[[en:Visual FoxPro]]
[[es:Visual FoxPro]]
[[et:Visual FoxPro]]
[[fa:ویژوال فاکس‌پرو]]
[[fr:Visual FoxPro]]
[[gl:Visual FoxPro]]
[[hr:Visual FoxPro]]
[[id:Visual FoxPro]]
[[ja:Microsoft Visual FoxPro]]
[[ko:FoxPro]]
[[ms:Visual FoxPro]]
[[nl:Visual FoxPro]]
[[pl:Visual FoxPro]]
[[pt:Visual FoxPro]]
[[ru:Visual FoxPro]]
[[tg:Visual FoxPro]]
[[tr:Visual FoxPro]]
[[vi:Visual FoxPro]]
[[zh:Visual FoxPro]]