The information in this article applies to:
- Microsoft FoxPro for Windows, versions 2.5x, 2.6
- Microsoft FoxPro for MS-DOS, versions 2.0, 2.5x, 2.6, 2.6a
- Microsoft FoxPro for Macintosh, version 2.5b
SYMPTOMS
A program that creates a second program then runs the newly created program
runs an older version of the second program.
CAUSE
When a program in memory is run again, FoxPro does not reload the program
from disk. Instead, the existing version in memory is used.
STATUS
This behavior is by design to enhance the speed of FoxPro.
NOTE: This does not occur in FoxPro 2.6a for Windows.
RESOLUTION
There are two ways to force FoxPro to read the most current copy of the
program file from disk:
- The preferred solution is to issue a CLEAR PROGRAM command immediately
before the DO test statement in TXTMRG.PRG. The CLEAR PROGRAM command is
designed to force FoxPro to reload the desired program file from disk.
-or-
- Issue a SET DEVELOPMENT ON command immediately before the first SET
TEXTMERGE command. Although the default for SET DEVELOPMENT is ON,
adding this line to a program forces FoxPro to reload the file from
disk. However, changing the setting of SET DEVELOPMENT may not be
desirable within a program.
MORE INFORMATION
Steps to Reproduce Behavior
- Create a program named CALLPRG that contains the following command:
WAIT WINDOW "Version before text merge"
- In the Command window, type the following command:
DO callprg
- Create a program named TXTMRG that contains the following commands
SET TALK OFF
SET TEXTMERGE TO "callprg.prg"
SET TEXTMERGE ON
WAIT WINDOW NOWAIT "Version after text merge"
SET TEXTMERGE OFF
SET TEXTMERGE TO
DO callprg
- In the Command window, type the following command:
DO txtmrg
A wait window that says "Version before text merge" appears because FoxPro
uses the copy of CALLPRG that exists in memory.
|