*!************************************************************************ * codefile.code *!************************************************************************ * Example only * Creates a table that stores a code name and code code * Allows program code to be compiled and run on the fly by seeking * the program name to run (stored in cprogram character field) and running * the associated code (stored in mcode memo field) * SET TALK OFF CLEAR IF FILE('codefile.dbf') DELETE FILE ('codefile.dbf') ENDIF IF FILE('codefile.cdx') DELETE FILE ('codefile.cdx') ENDIF IF FILE('codefile.fpt') DELETE FILE ('codefile.fpt') ENDIF lcFileName = SYS(2015) lcDelete=lcFileName + ".fxp" lcFileName=lcFileName+".prg" #IF 'VISUAL' $ UPPER(VERSION()) SET SAFETY OFF SELE 0 CREATE TABLE codefile FREE (cprogram c(15), mcode m) INDEX ON cprogram TAG cprogram SET ORDER TO TAG cprogram APPEND BLANK REPLACE cprogram WITH 'msgbox' REPLACE mcode WITH ; "PARAMETERS cmsg,nbuttons,ctitle"+CHR(13); +"IF TYPE('cmsg')='L'"+CHR(13); +" cmsg='This is a test message.'"+CHR(13); +"ENDIF"+CHR(13); +"IF TYPE('nbuttons')='L'"+CHR(13); +" nbuttons=16"+CHR(13); +"ENDIF"+CHR(13); +"IF TYPE('ctitle')='L'"+CHR(13); +" ctitle='IMPORTANT MESSAGE'"+CHR(13); +"ENDIF"+CHR(13); +"MESSAGEBOX(cmsg,nbuttons,ctitle)"+CHR(13) IF SEEK('msgbox','codefile','cprogram') *VFP7/VFP8 code: EXECSCRIPT(codefile.mcode,'VFP7',64,'codeFile example.') *VFP6 and below code: STRTOFILE(mcode, lcFileName ) COMPILE (lcFileName) DO (lcFileName) WITH 'VFP6SP3',64,'codeFile example.' ELSE WAIT WINDOW "Could Not Find Program to Run." AT 22,35 ENDIF #ELSE SET SAFETY OFF SELE 0 CREATE TABLE codefile (cprogram c(15), mcode m) INDEX ON cprogram TAG cprogram SET ORDER TO TAG cprogram APPEND BLANK REPLACE cprogram WITH 'waitbox' REPLACE mcode WITH ; "PARAMETERS cmsg,ntimeout"+CHR(13); +"IF TYPE('cmsg')='L'"+CHR(13); +" cmsg='This is a test message.'"+CHR(13); +"ENDIF"+CHR(13); +"IF TYPE('ntimeout')='L'"+CHR(13); +" ntimeout=5"+CHR(13); +"ENDIF"+CHR(13); +"mycode=' WAIT WINDOW '"+";"+CHR(13); +"+CHR(39)+cmsg+CHR(39)"+";"+CHR(13); +"+' TIMEOUT '"; +"+ALLTRIM(STR(ntimeout))"; +CHR(13); +"&mycode" IF SEEK('waitbox','codefile','cprogram') * IF !FILE(lcFileName) xfileh = FCREATE(lcFileName) ELSE xfileh = FOPEN(lcFileName,2) ENDIF IF xfileh=0 WAIT WINDOW "Cannot create the program." NOWAIT ELSE =FCHSIZE(xfileh,0) xiniline=codefile.mcode =FPUTS(xfileh,xiniline) =FCLOSE(xfileh) ENDIF IF FILE(lcFileName) DO (lcFileName) WITH 'FPD26.',10 ENDIF ELSE WAIT WINDOW "Could Not Find Program to Run." AT 22,35 ENDIF #ENDIF IF USED('codefile') USE IN codefile ENDIF IF FILE(lcFileName) DELETE FILE (lcFileName) ENDIF IF FILE(lcDelete) DELETE FILE (lcDelete) ENDIF RETURN