Ricerca…


Osservazioni

Foxpro è stato creato nei primi anni '80 (originariamente come FoxBase - 1984?) Dal software Fox e supportato su piattaforme Mac OS, Unix, DOS, Windows. Allora era conosciuto come il motore di database più veloce su PC. Più tardi nel 1992, sfortunatamente , fu acquisito da Microsoft. Dopo l'acquisizione di Microsoft, nel 1994 sono stati rilasciati Foxpro per DOS (FPD) e Foxpro per Windows (FPW) 2.6. Alla fine del 1995, Foxpro ottenne il nome "Visual" e il supporto della piattaforma era limitato alle sole finestre. Era anche la prima versione di Foxpro in cui la lingua si rivelava essere Object Oriented.

Il sito ufficiale di Microsoft Visual Foxpro (comunemente denominato solo VFP) lo descrive come:

Il sistema di sviluppo di database Microsoft® Visual FoxPro® è un potente strumento per la creazione rapida di applicazioni desktop, client client, client distribuiti, client / server e database ad elevate prestazioni.

Anche se è una lingua vecchia, è ancora considerato il linguaggio più semplice per la creazione di un'applicazione data centrica rapidamente per il desktop di Windows. Se ciò di cui hai bisogno è creare un'applicazione basata su dati per Windows Desktop, scegliendo VFP lo farebbe in modo semplice e veloce.

Versioni

Versione Rilasciato
FPW 2.6a 1994/10/28
Visual Foxpro 3.0 1995/12/16
Visual Foxpro 5.0 1997/01/24
Visual Foxpro 6.0 2000/08/18
Visual Foxpro 7.0 2002/01/04
Visual Foxpro 8.0 2003/10/25
Visual Foxpro 9.0 2004-12-13
Visual Foxpro 9.0 SP2 2007-10-21

Installazione o configurazione

Istruzioni dettagliate su come installare o installare visual-foxpro.

Ciao mondo

In tutte le lingue tradizionalmente il primo esempio è la stampa di "Hello World". Probabilmente farlo è più semplice in VFP:

? "Hello World"

Aggiungi Global Error Handler

Un modo semplice per rilevare errori non gestiti (eccezioni) in un'applicazione VFP consiste nell'utilizzare il comando ON ERROR vicino all'inizio del programma principale.

Il seguente comando ON ERROR chiama un metodo nel programma corrente chiamato "errorHandler". I valori restituiti da ERROR (il numero di errore VFP), MESSAGE (il messaggio di errore VFP), PROGRAM (nome del programma attualmente in esecuzione) e LINENO (il numero di riga dell'errore) vengono passati al metodo errorHandler.

ON ERROR DO errorHandler WITH ERROR(), MESSAGE(), PROGRAM(), LINENO()

Un semplice metodo errorHandler può essere simile al seguente.

PROCEDURE errorHandler
    LPARAMETERS tnVFPErrorNumber, tcVFPErrorMessage, tcProcWithError, tnLineNumber

    STORE 'Error message: ' + tcVFPErrorMessage + CHR(13) + ;
        'Error number: ' + TRANSFORM(tnVFPErrorNumber) + CHR(13) + ;
        'Procedure with error: ' + tcProcWithError + CHR(13) + ;
        'Line number of error: ' + TRANSFORM(tnLineNumber) TO lcDetails

    MESSAGEBOX(lcDetails, 16, "Unhandled Exception")

    ON ERROR *
    ON SHUTDOWN
    CLEAR EVENTS

    QUIT
ENDPROC

È inoltre possibile modificare e ripristinare il gestore degli errori in mezzo. Ad esempio, a un certo punto si desidera aprire tutte le tabelle in una cartella esclusivamente, e se non si può non si vuole continuare:

procedure DoSomethingWithExclusiveLock(tcFolder)
local lcOldError, llInUse, ix && by default these variables have a value of .F.
lcError = on('error') && save current handler
on error llInUse = .T.  && new handler
local array laTables[1]  
for ix=1 to adir(laTables, addbs(m.tcFolder) + '*.dbf'))
   use (addbs(m.tcFolder)+laTables[m.ix,1]) in 0 exclusive
endfor
on error &lcError && restore old handler
if m.llInUse && couldn't get exclusive lock on all tables
   close databases all
   return
endif
* do whatever
endproc

Suggerimento: a volte, in particolare durante il debug, si desidera ripristinare il gestore degli errori predefinito che consente di interrompere e passare al codice in cui si è verificato l'errore, quindi in qualsiasi posizione precedente l'errore, aggiungendo temporaneamente:

on error

farei questo



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow