Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
StrToFile Equivalent in FPD26?
Message
De
18/02/2003 17:21:12
 
 
À
15/02/2003 09:27:06
Information générale
Forum:
Visual FoxPro
Catégorie:
FoxPro 2.x
Divers
Thread ID:
00751416
Message ID:
00754690
Vues:
20
Actually, even though mine worked, your code wrote the code to the file line by line, so I incorporated your code instead:
*!*************************************************************************
* 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)
*
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,'This example uses the execscript command';
      +CHR(13)+'and requires VFP7 or above.',64,'codeFile example.')
    *VFP6 SP3 (added compile command) and below code:
    STRTOFILE(mcode, lcFileName )
    COMPILE (lcFileName)
    DO (lcFileName) WITH 'This example uses the compile command.';
      +CHR(13)+'and works in VFP6 SP3 and below',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
      * TCH 2/10/2003 original code works, 
      * but writes entire memo field at one time not line by line
      *!*				=FCHSIZE(xfileh,0)
      *!*				xiniline=codefile.mcode
      *!*				=FPUTS(xfileh,xiniline)
      *!*				=FCLOSE(xfileh)
      * From Claudio Rola, UT 2/15/2003, writes line by line
      memo_size = MEMLINES(codefile.mcode)
      FOR i = 1 TO memo_size
        m.cLyne   = MLINE(codefile.mcode, i)
        =FPUTS(xfileh, m.cLyne)  
      ENDFOR
      =FCLOSE(xfileh)
    ENDIF
    IF FILE(lcFileName)
      ? lcFileName
      DO (lcFileName) ;
        WITH 'This is an example using the compile for 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
Thanks Claudio!
Tracy
.·*´¨)
.·`TCH
(..·*

010000110101001101101000011000010111001001110000010011110111001001000010011101010111001101110100
"When the debate is lost, slander becomes the tool of the loser." - Socrates
Vita contingit, Vive cum eo. (Life Happens, Live With it.)
"Life is not measured by the number of breaths we take, but by the moments that take our breath away." -- author unknown
"De omnibus dubitandum"
Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform