>************************************************************************ >* codefile.prg >************************************************************************ >* 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) >* >* VFP7 Example Usage: >* EXECSCRIPT(codefile.mcode,'Good Morning',64,'Personal Message') >* >* FPD26 USAGE: >* STRTOFILE(mcode, lcFileName ) >* COMPILE (lcFileName) >* DO (lcFileName) WITH 'This is an example using the compile'; >* +'for FPD26.','15,10',10 >* >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 msg',64,'codeFile example.') > *VFP6 and below code: > STRTOFILE(mcode, lcFileName ) > COMPILE (lcFileName) > DO (lcFileName) WITH 'VFP6',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,clocation,ntimeout"+CHR(13); > +"IF TYPE('cmsg')='L'"+CHR(13); > +" cmsg='This is a test message.'"+CHR(13); > +"ENDIF"+CHR(13); > +"IF TYPE('clocation')='L'"+CHR(13); > +" clocation='22,35'"+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)"; > +"+' AT '"+";"+CHR(13); > +"+clocation"+";"+CHR(13); > +"+' TIMEOUT '"; > +"+ALLTRIM(STR(ntimeout))"; > +CHR(13); > +"&mycode" > WAIT WINDOW "Ready to seek" > IF SEEK('waitbox','codefile','cprogram') > STRTOFILE(mcode, lcFileName ) > COMPILE (lcFileName) > DO (lcFileName) WITH 'FPD26.','15,10',10 > 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 > >>