Para VFP9:
http://fox.wikis.com/wc.dll?Wiki~VFP9RuntimeFiles
Para VFP8:
http://fox.wikis.com/wc.dll?Wiki~VFP8RuntimeFiles
Para VFP7:
http://fox.wikis.com/wc.dll?Wiki~VFP7RuntimeFiles
*----------------- *-- Principal.prg *----------------- *-- Configuraciones iniciales DO Inicio.prg *-- Mostrar la interface inicial DO MenuPrincipal.MPR && Menú principal *- ó DO FORM FormPrincipal && Formulario principal *-- Iniciar el bucle de eventos READ EVENTS *-- Terminar el programa DO Termina.prg
LOCAL lc
SET SAFETY OFF
TEXT TO lc NOSHOW
*-- Inicio del programa Ejemplo.prg
LOCAL loForm AS FORM
_SCREEN.VISIBLE = .F.
loForm = CREATEOBJECT('FormPrincipal')
loForm.SHOW
MESSAGEBOX("Se iniciará el bucle de eventos",64, "READ EVENTS")
READ EVENTS
MESSAGEBOX("Terminó el bucle de eventos",64, "CLEAR EVENTS")
_SCREEN.VISIBLE = .T.
RETURN
DEFINE CLASS FormPrincipal AS FORM
CAPTION = "Ejemplo de un bucle de eventos"
SHOWWINDOW = 2
AUTOCENTER = .T.
HEIGHT = 480
WIDTH = 640
ADD OBJECT cmdSalir AS COMMANDBUTTON WITH ;
CAPTION = "Salir", ;
HEIGHT = 40, WIDTH = 100, ;
TOP = 400, LEFT = 500
PROCEDURE cmdSalir.CLICK
RELEASE THISFORM
ENDPROC
PROCEDURE DESTROY
CLEAR EVENTS
ENDPROC
PROCEDURE CLICK
WAIT WINDOWS "Evento click en el formulario" NOWAIT
ENDPROC
ENDDEFINE
*-- Fin de Ejemplo.prg
ENDTEXT
*-- Genero el PRG, PJX y EXE
STRTOFILE(lc,"Ejemplo.prg")
BUILD PROJECT Ejemplo.pjx FROM Ejemplo.prg
BUILD EXE Ejemplo.EXE FROM Ejemplo.pjx
MESSAGEBOX("Ahora ejecute el archivo EJEMPLO.EXE generado.",64,"Aviso")
local qrar
qrar="rar32.exe a c:\midirectorioxls\miarchivo.rar *.xls"
set defa to c:\midirectorioxls
run/N7 &qrar
messagebox("Compactar el archivo en formato rar",48)
wait windows "compactando datos en archivo rar" nowait noclear
do while (FindWindow (0, "c:midirectorioxlsrar32.exe") > 0)
enddo
clear WINDOWS
set defa to c:\mydefault
Detalles:* Esto es un comentario de nuestro códigoOtra forma similar es utilizar el comando " NOTE ", que también nos indica el comienzo de una línea de comentarios no ejecutable en nuestro código.
NOTE Esto es una línea de comentarioOtro comando que podemos utilizar para nuestros comentarios es " && "que indica que a continuación aparece un comentario en línea.
lnMes = 1 DO WHILE lnMes <= 12 && Ciclo de 12 meses lnMes = lnMes + 1 ENDDO && WHILE lnMes <= 12La inserción de comentarios en línea para indicar el final de los comandos de programación estructurados IF ... ENDIF, DO WHILE ... ENDDO, CASE ... ENDCASE y FOR ... ENDFOR mejora significativamente la legibilidad del código.
* Esto es un comentario que abarca ; dos líneas NOTE Esto es una línea de comentarios que ; continua en la siguiente línea IF DAY(DATE()) = 1 && Si es el primer día del ; mes se ejecuta el siguiente código ? "Primer día del mes" ENDIF && DAY(DATE()) = 1Otra buena práctica de programación es colocar texto al inicio de nuestros programas o funciones con datos como: nombre, autor, fecha, descripción, etc.
*--------------------- * PROCEDURE / FUNCTION *--------------------- * Autor......: * Fecha......: <<DATE()>> * Descripción: * Uso........: * Parámetros.: * Retorno....: *---------------------Con solo arrastrar y soltar el fragmento de texto desde el Toolbox a nuestro archivo de programa, este aparecerá escrito. En el fragmento de texto podemos tener texto de funciones o expresiones rodeados por delimitadores de combinación de texto (Ej: <<DATE()>>) que se evaluarán si en las propiedades del fragmento de texto (text scrap) marcamos la casilla de verificación "Evaluar usando text merge".
LOCAL lnHandle, laError, lcMsg, ln
DIMENSION laError[1]
*-- Especificar el DSN, Usuario y Contraseña correctos
lnHandle = SQLCONNECT('[Origen de datos SQL]','sa','')
IF lnHandle > 0
SQLEXEC(lnHandle,'SELECT * FROM TablaQueNoExiste')
IF AERROR(laError) > 0
*-- Ocurrio un error
* DISPLAY MEMORY LIKE laError
lcMsg = ""
FOR ln = 1 TO ALEN(laError,2)
lcMsg = lcMsg + TRANSFORM(laError(1,ln)) + CHR(13)
ENDFOR
MESSAGEBOX(lcMsg, 16, "Error de ODBC")
ENDIF
SQLDISCONNECT(lnHandle)
ELSE
IF AERROR(laError) > 0
*-- Ocurrio un error
* DISPLAY MEMORY LIKE laError
lcMsg = ""
FOR ln = 1 TO ALEN(laError,2)
lcMsg = lcMsg + TRANSFORM(laError(1,ln)) + CHR(13)
ENDFOR
MESSAGEBOX(lcMsg, 16, "Error de ODBC")
ENDIF
ENDIF
AERROR( ) crea una matriz con siete columnas y devuelve el número de filas de la matriz. El tipo de error que se produce determina el número de filas de la matriz.