-----------------------------------------------
                  VFP C++编译软件(VFP C++ Compiler)更新历史
                                2017 年 01 月
                -----------------------------------------------
                深圳市百誉佳软件技术有限公司版权所有,2000-2017



**************************************************
2017/3/20

新增功能:

    1、支持Visual C++ 14.1(Visual Studio 2017)编译器。


**************************************************
2017/2/8

下列问题已修复:

    1、项目中包含数据库文件问题。

--------------------------------------
   VFP C++ Compiler Update 20170208
--------------------------------------

1, Project includes database files problem.

For example,
the project includes some database files:
testdata1.dbc
testdata2.dbc
testdata3.dbc
...
these database files (*.dbc, *.dct and *.dcx) will be compiled into the executable file.

For the old VFP C++ Compiler,
these database files (*.dbc, *.dct and *.dcx) will be opened in the system data session automatically
when opening the table (*.dbf) files,
so these database files (*.dbc, *.dct and *.dcx) will NOT be compiled into the executable file,
so the compiled executable file is a corrupted executable file and it can't run.

For the new VFP C++ Compiler,
it will run the command "CLOSE DATABASE ALL" first,
so these database files (*.dbc, *.dct and *.dcx) will be compiled into the executable file,
so it can run fine.


**************************************************
2016/12/29

VFP C++编译软件(VFP C++ Compiler)2016 RELEASE。


**************************************************
2016/8/1

新增功能:

    1、支持Visual C++ 14.0(Visual Studio 2015)编译器。


**************************************************
2016/4/10

下列问题已修复:

    1、FOR EACH ... ENDFOR语句问题。

--------------------------------------
   VFP C++ Compiler Update 20160410
--------------------------------------

1, FOR EACH ... ENDFOR statement problem.

For example,
LOCAL lcComputerName, loWMIService, loItems, loItem
lcComputerName = "."
loWMIService = GETOBJECT("winmgmts:\\" + lcComputerName + "\root\cimv2")
loItems = loWMIService.ExecQuery("Select * from Win32_NetworkAdapter",,48)
FOR EACH loItem IN loItems
   ?loItem.name
ENDFOR
WAIT

For the old VFP C++ Compiler,
it will run the FOR EACH ... ENDFOR statement many times, for example,
FOR EACH loItem IN loItems
   ...
ENDFOR
FOR EACH loItem IN loItems
   ...
ENDFOR
FOR EACH loItem IN loItems
   ...
ENDFOR
but VFP only can run the FOR EACH ... ENDFOR statement once.
When VFP run the FOR EACH ... ENDFOR statement for the first time,
it can run fine.
When VFP run the FOR EACH ... ENDFOR statement for the second time,
it will occur an error:
OLE IDispatch exception code 0 from SWbemObjectSet: Unspecified error.

For the new VFP C++ Compiler,
it will only run the FOR EACH ... ENDFOR statement once,
so it can run fine.


**************************************************
2015/12/23

VFP C++编译软件(VFP C++ Compiler)2015 RELEASE。


**************************************************
2015/8/20

新增功能:

    1、支持清单文件。

--------------------------------------
   VFP C++ Compiler Update 20150820
--------------------------------------

Usually, we can create a user-defined manifest file <PROJECT-NAME>.EXE.manifest,
then when VFP build the executable file,
the user-defined manifest file will be embedded into the executable file automatically.

For example, for the Win32 executable files compiled with Visual FoxPro 32-bit,
we can create a user-definded manifest file such as:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity 
	version="1.0.0.0" 
	type="win32" 
	name="Microsoft.VisualFoxPro" 
	processorArchitecture="x86"
/>
<description>Visual FoxPro</description>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
	<security>
		<requestedPrivileges>
			<requestedExecutionLevel level="requireAdministrator" /> 
		</requestedPrivileges>
	</security>
</trustInfo>
<dependency>
    <dependentAssembly>
        <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            language="*"
            processorArchitecture="x86"
            publicKeyToken="6595b64144ccf1df"
        />
    </dependentAssembly>
</dependency>
</assembly>
then the compiled executable file will run as Administrator.

IMPORTANT NOTE:

For the Win64 executable files compiled with VFP Advanced (x64),
we must change:
processorArchitecture="x86"
to:
processorArchitecture="amd64"


**************************************************
2015/7/5

新增功能:

    1、/VFPLIBLANGUAGE=... VFP运行库语言(仅支持Visual FoxPro Advanced)

--------------------------------------
   VFP C++ Compiler Update 20150705
--------------------------------------

1, /VFPLIBLANGUAGE=... VFP Support Library Language (only support Visual FoxPro Advanced)

For Visual FoxPro Advanced, we can select VFP Support Library Language:
CHS - Simplified Chinese
CHT - Traditional Chinese
CSY - Czech
DEU - German
ENU - English
ESN - Spanish
FRA - French
KOR - Korean
RUS - Russian


**************************************************
2015/2/26

VFP C++编译软件 (x64)。

--------------------------------------
   VFP C++ Compiler Update 20150226
--------------------------------------

1, VFP C++ Compiler (x64).

For the VFP C++ Compiler 32-bit version:
VFP C++ Compiler 32-bit version can run on Windows 32-bit or Windows 64-bit.
When VFP C++ Compiler 32-bit version run on Windows 32-bit, it supports Visual
FoxPro 6.0, Visual FoxPro 7.0, Visual FoxPro 8.0, Visual FoxPro 9.0 and Visual FoxPro
Advanced version, it only can compile and generate the Win32 executable files.
When VFP C++ Compiler 32-bit version run on Windows 64-bit, it supports Visual
FoxPro 6.0, Visual FoxPro 7.0, Visual FoxPro 8.0, Visual FoxPro 9.0, Visual FoxPro
Advanced and Visual FoxPro Advanced (x64) version, it can compile and generate the
Win32/Win64 executable files.

For the VFP C++ Compiler 64-bit version:
VFP C++ Compiler 64-bit version only can run on Windows 64-bit.
When VFP C++ Compiler 64-bit version run on Windows 64-bit, it supports Visual
FoxPro 6.0, Visual FoxPro 7.0, Visual FoxPro 8.0, Visual FoxPro 9.0, Visual FoxPro
Advanced and Visual FoxPro Advanced (x64) version, it can compile and generate the
Win32/Win64 executable files.

If we select "VFP run file" to a 32-bit VFP run file,
for example,
C:\Program Files (x86)\Microsoft Visual FoxPro 9\VFP9.EXE
(or C:\Program Files (x86)\Baiyujia VFP C++ Compiler\vfp9\VFP9.EXE)
C:\Program Files (x86)\Microsoft Visual FoxPro Advanced\VFPA.EXE
(or C:\Program Files (x86)\Baiyujia VFP C++ Compiler\vfpa\VFPA.EXE)
and select "C/C++ compiler file" to a 32-bit make file,
for example,
C:\Program Files (x86)\Baiyujia VFP C++ Compiler\foxrun10\MAKE.BAT
VFP C++ Compiler will compile and generate to the Win32 executable files.

If we select "VFP run file" to a 64-bit VFP run file,
for example,
C:\Program Files\Microsoft Visual FoxPro Advanced\VFPA.EXE
(or C:\Program Files (x86)\Baiyujia VFP C++ Compiler\vfpa64\VFPA.EXE)
and select "C/C++ compiler file" to a 64-bit make file,
for example,
C:\Program Files (x86)\Baiyujia VFP C++ Compiler\foxrun1064\MAKE.BAT
VFP C++ Compiler will compile and generate to the Win64 executable files.


**************************************************
2015/2/12

下列问题已修复:

    1、SCAN WHILE ... ENDSCAN语句问题。

--------------------------------------
   VFP C++ Compiler Update 20150212
--------------------------------------

1, SCAN WHILE ... ENDSCAN statement problem.

For example,
?"SCAN WHILE: 2,3"
?
GO 2
?"SCAN START - RECN(): "+LTRIM(STR(RECN(),16))
SCAN WHILE MOD(RECN(),5)<=3
   ?RECN()
ENDS
?"SCAN END - RECN(): "+LTRIM(STR(RECN(),16))
WAIT

For the old VFP C++ Compiler,
it will display:
SCAN END - RECN(): 3

For the new VFP C++ Compiler,
it will display:
SCAN END - RECN(): 4

Now VFP C++ Compiler can run SCAN WHILE ... ENDSCAN code same as VFP.


**************************************************
2014/12/20

VFP C++编译软件(VFP C++ Compiler)2014 RELEASE。


**************************************************
2014/12/13

新增功能:

    1、支持Visual C++ 12.0(Visual Studio 2013)编译器。


**************************************************
2014/11/28

新增功能:

    1、/VCFASTSCXINIT=ON|OFF 是否表单对象属性快速转换为INIT事件代码
    2、/VCFASTFRXINIT=ON|OFF 是否报表数据快速转换为数据环境INIT事件代码

--------------------------------------
   VFP C++ Compiler Update 20141128
--------------------------------------

1, /VCFASTSCXINIT=ON|OFF Fast Convert Form's Properties into Procedure Init
   /VCFASTFRXINIT=ON|OFF Fast Convert Report's Expressions into Procedure Init

If we set:
/VCFASTSCXINIT=ON Fast Convert Form's Properties into Procedure Init
VFP C++ Compiler only convert the VFP base class object's properties into procedure init,
so convert faster.

If we set:
/VCFASTFRXINIT=ON Fast Convert Report's Expressions into Procedure Init
VFP C++ Compiler only convert the TextBox control's expressions into procedure init,
it does not convert the Label control's expressions into procedure init,
so convert faster.

Recommend to set the following compile options in the more compile options form:
/VCSCXINIT=ON Convert Form's Properties into Procedure Init
/VCFASTSCXINIT=ON Fast Convert Form's Properties into Procedure Init
/VCFRXINIT=ON Convert Report's Expressions into Procedure Init
/VCFASTFRXINIT=ON Fast Convert Report's Expressions into Procedure Init
then VFP C++ Compiler can compile faster.


**************************************************
2014/11/20

新增功能:

    1、/VCMULTITASK=ON|OFF 是否多任务编译模式
    2、/VCMULTITASKNUMBER=n 多任务编译任务个数

--------------------------------------
   VFP C++ Compiler Update 20141120
--------------------------------------

1, /VCMULTITASK=ON|OFF Multi-Task Compile Mode
   /VCMULTITASKNUMBER=n Multi-Task Number

Usually we can set the multi-task number to the maximum number of threads for the CPU supported,
for example, for a 2 cores 4 threads CPU, we can set it to 4:
/VCMULTITASK=ON Multi-Task Compile Mode
/VCMULTITASKNUMBER=4 Multi-Task Number

Usually, if we set the multi-task number to 4 for a 4 threads CPU,
the compiled time is about 60% of the compiled time of the single-task compile.
If we set the multi-task number to 8 for a 8 threads CPU,
the compiled time is about 40% of the compiled time of the single-task compile.

Recommend to set the following compile options for multi-core or multi-thread CPU:
/VCINCREMENTAL=ON Incremental Compile Mode
/VCSAVEINCREMENTAL=ON Save Incremental Compile Files
/VCMULTITASK=ON Multi-Task Compile Mode
/VCMULTITASKNUMBER=4 Multi-Task Number
then VFP C++ Compiler can compile faster.


**************************************************
2014/11/12

新增功能:

    1、/VCINCREMENTAL=ON|OFF 是否增量编译模式
    2、/VCSAVEINCREMENTAL=ON|OFF 是否保留增量编译文件

--------------------------------------
   VFP C++ Compiler Update 20141112
--------------------------------------

1, /VCINCREMENTAL=ON|OFF Incremental Compile Mode
   /VCSAVEINCREMENTAL=ON|OFF Save Incremental Compile Files

If we set:
/DEBUG=ON Debug Mode
or /VCINCREMENTAL=ON Incremental Compile Mode
or /VCSAVEINCREMENTAL=ON Save Incremental Compile Files
VFP C++ Compiler will retain the temporary files for incremental compile.

Usually, if we set:
/VCINCREMENTAL=ON Incremental Compile Mode
VFP C++ Compiler only compile the modified files in the VFP project file,
that is VFP C++ Compiler can compile faster.

VFP C++ Compiler will re-compile all files in the VFP project file in some cases:
the compile options have been modified except the following compile options:
/VCENCRYPT=ON|OFF Encrypt Executable File
/VCPACKEXE=ON|OFF Compress Executable File
/VFPLIB=ON|OFF Include VFP Support Library
/VCLIB=ON|OFF Include Visual C++ Library
/VCPACKDLL=ON|OFF Compress Dynamic Link Library File
/VCPACK=ON|OFF Pack Executable File
/DEBUG=ON|OFF Debug Mode
/SILENT=ON|OFF Silent Mode
/VCINCREMENTAL=ON|OFF Incremental Compile Mode
/VCSAVEINCREMENTAL=ON|OFF Save Incremental Compile Files
or the incremental compile files have been deleted,
or the main program file has been modified.

Usually, first, we can set:
/VCINCREMENTAL=ON Incremental Compile Mode
/VCSAVEINCREMENTAL=ON Save Incremental Compile Files
and compile the VFP project.

After this, if we set:
/VCINCREMENTAL=ON Incremental Compile Mode
/VCSAVEINCREMENTAL=ON Save Incremental Compile Files
VFP C++ Compiler only compile the modified files in the VFP project file,
that is VFP C++ Compiler can compile faster.

If we need re-compile the VFP project, we can set:
/VCINCREMENTAL=OFF does not compile with Incremental Compile Mode
/VCSAVEINCREMENTAL=ON Save Incremental Compile Files
VFP C++ Compiler will re-compile all files in the VFP project file.


**************************************************
2014/10/8

新增功能:

    1、VFP C++编译软件 for Windows 10。

--------------------------------------
   VFP C++ Compiler Update 20141008
--------------------------------------

1, VFP C++ Compiler for Windows 10

For some reasons, the GetVersion function can't work correctly on windows 8.1 or later,
please refer to:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms724439%28v=vs.85%29.aspx

I have added a MyGetVersion function in vfpcore.dll instead of the GetVersion function
in kernel32.dll, so it can display "VFP C++ Compiler for Windows 8.1" on windows 8.1,
and display "VFP C++ Compiler for Windows 10" on windows 10.

We MUST update vfpcore.dll to the version 20141008.


**************************************************
2014/9/18

下列问题已修复:

    1、/VCTOLARGEPROC=ON|OFF 是否编译为大程序文件格式(仅适用于VFP 9.0)
    2、私有数据工作期中SET TALK ON问题。

--------------------------------------
   VFP C++ Compiler Update 20140918
--------------------------------------

1, /VCTOLARGEPROC=ON|OFF Compile to Large Procedure Files Format (only used for VFP 9.0)

For VFP Advanced, it ALWAYS compile to large procedure files format and it has fixed
the large program files BUG, so there is no the compile option for VFP Advanced.

For VFP 6.0, 7.0 and 8.0, it does not support large procedure files format, so there is
no the compile option for VFP 6.0, 7.0 and 8.0.

For VFP 9.0,
If we set:
/VCTOLARGEPROC=ON Compile to Large Procedure Files Format
VFP C++ Compiler will compile to large procedure files format and automatically fix
the large program files BUG.

IMPORTANT NOTE:

For the old VFP C++ Compiler,
because the VFP project's version (9.0) is not the same as VFP C++ Compiler's version (10.0),
VFP C++ Compiler will create a temporary program file <PROJECT-NAME>$VCC$.PRG:
ON ERROR *
SET TALK OFF
SET RESOURCE OFF
SET NOTIFY OFF
COMPILE ("VCTEST.PRG")
CLEAR ALL
CLOSE ALL
QUIT
and then run VFP9.EXE <PROJECT-NAME>$VCC$.PRG to compile files,
but there is a problem for this method,
1, the VFP C++ Compiler window lost focus,
2, the VFP 9 windows got focus (although it has the SW_HIDE property),
3, the VFP C++ Compiler window got focus,
so the VFP C++ Compiler window is flashing.

For the new VFP C++ Compiler,
in fact, for ALMOST all files in the project,
1, VFP C++ Compiler compiled to large procedure files format (the VFP Advanced version format),
2, VFP C++ Compiler converted the VFP Advanced version format to the VFP 9.0 version format,
VFP C++ Compiler need not create a temporary program file <PROJECT-NAME>$VCC$.PRG and run it,
so there is no the flash problem, and compile faster.

About the large procedure files format, please refer to:
baiyujia website: www.baiyujia.com/vfpdocuments/f_vhfox.asp

vfp9 procedure size >64K format

Before vfp9, procedure size <64K, use one WORD can save the size of procedure:
00-01 DW size of procedure

In vfp9, procedure size >64K possible, use one WORD and one DWORD to save the size of procedure:
00-01 DW 0
02-05 DD size of procedure

2, /VCNOTDISPLAY_LARGEPROC=ON|OFF Does Not Display the Large Program Files in the Project
(only used for VFP 9.0)

About the large program files BUG, please refer to:
baiyujia website: www.baiyujia.com/vfpdocuments/f_vfp9fix2.asp

Usually, if we set:
/VCTOLARGEPROC=ON Compile to Large Procedure Files Format
then all files in the project will be compiled to large procedure files format,
so we needn't display the large program files in the project.

So recommend to set:
/VCTOLARGEPROC=ON Compile to Large Procedure Files Format
/VCNOTDISPLAY_LARGEPROC=ON Does Not Display the Large Program Files in the Project

3, SET TALK ON in private data session problem.

If a form or a report use private data session,
some settings are set to the default values,
for example, SET TALK is set to ON.

Usually, we need change some settings, for example,
SET STEP OFF
SET ECHO OFF
SET DEBUG OFF
SET ESCAPE OFF
SET TALK OFF
SET SAFETY OFF
...

For the old VFP C++ Compiler,
it will insert the statement "SET TALK OFF" into the PROCEDUREs Form.Load() and Form.Init(),
but it will not insert the statement "SET TALK OFF" into the PROCEDUREs
DataEnvironment.BeforeOpenTables() and DataEnvironment.Init().

For the new VFP C++ Compiler,
it will insert the statement "SET TALK OFF" into the PROCEDUREs Form.Load(), Form.Init(),
FormSet.Load(), FormSet.Init(),
ToolBar.Init(), ToolBar.sub-objects.Init(),
DataEnvironment.allmethods(), DataEnvironment.sub-objects.allmethods().

Sometimes, VFP C++ Compiler does not know the form use private data session or not.
For example,
in the class library, we can set:
DataSession = 1 && default data session
but in the form (it is subclassed from the class library), we can set:
DataSession = 2 && private data session
then the form (and the class library) use private data session.

When VFP C++ Compiler compile the class library,
it does not know the class library use private data session or not.
So, for the new VFP C++ Compiler,
it ALWAYS insert the statement "SET TALK OFF" into some PROCEDUREs.


**************************************************
2014/9/1

新增功能:

    1、/VCNAMEEXCLUDEVCD2=ON|OFF 是否不编译在字符串定界符内的变量名称
    2、/VCNAMEEXCLUDEVCD3=ON|OFF 是否不编译字段或属性名称

--------------------------------------
   VFP C++ Compiler Update 20140901
--------------------------------------

1, /VCNAMEEXCLUDEVCD2=ON|OFF Does Not Compile Variable Names in String Delimiters

If we set:
/VCNAMEEXCLUDEVCD2=ON Does Not Compile Variable Names in String Delimiters
VFP C++ Compiler does not compile variable names in string delimiters.

For example,
x1 = 123
?"The value of x1 is "+STR(x1,10)
VFP C++ Compiler does not compile the variable name x1.

2, /VCNAMEEXCLUDEVCD3=ON|OFF Does Not Compile Field Names or Property Names

If we set:
/VCNAMEEXCLUDEVCD3=ON Does Not Compile Field Names or Property Names
VFP C++ Compiler does not compile field names or property names.

For example,
fld1 = 123
?STR(t1.fld1,10)
VFP C++ Compiler does not compile the variable name (or field name) fld1.

3, /VCNAMEEXCLUDEVCW=ON|OFF Does Not Compile Variable Names Specified
in the User Reserved Words File

If we want does not compile other variable names,
we can set:
/VCNAMEEXCLUDEVCW=ON Does Not Compile Variable Names Specified in the User Reserved Words File
and add the variable names to the user reserved words file (<PROJECT-NAME>.VCW).

For example,
cancelar
or:
cancelar Caption = "Cancelar"
VFP C++ Compiler only get the first word in per line.

4, /VCNAMEONLYTEXTMERGEDELI=ON|OFF For Text Merge Statements, Only Compile Variable Names
in the Text Merge Delimiters

If we set:
/VCNAMEONLYTEXTMERGEDELI=OFF For Text Merge Statements, Compile All Variable Names in the Statements

For example,
x1 = 123
text
The value of x1 is << x1 >>
endtext

will be compiled to:
_vc_aa = 123
text
The value of _vc_aa is << _vc_aa >>
endtext

If we set:
/VCNAMEONLYTEXTMERGEDELI=ON For Text Merge Statements, Only Compile Variable Names
in the Text Merge Delimiters

For example,
x1 = 123
text
The value of x1 is << x1 >>
endtext

will be compiled to:
_vc_aa = 123
text
The value of x1 is << _vc_aa >>
endtext


**************************************************
2014/4/8

新增功能:

    1、默认编译选项。

--------------------------------------
   VFP C++ Compiler Update 20140408
--------------------------------------

1, Default Compile Options.

     Run the setup program VCSETUP.EXE will write the Default Compile Options
(VFP run file and C/C++ compiler file) to the file default.vcf.

     Run the VFP C++ Compiler VC.EXE will read the Default Compile Options
(VFP run file and C/C++ compiler file) from the file default.vcf.


**************************************************
2014/3/15

新增功能:

    1、VFP C++编译软件安装程序。

--------------------------------------
   VFP C++ Compiler Update 20140315
--------------------------------------

1, VFP C++ Compiler setup program.

     Run the setup program VCSETUP.EXE can Install VFP C++ Compiler to the folder
C:\Program Files\Baiyujia VFP C++ Compiler.

2, Access the Program Files folder problem.

     Usually, we have no "Write" or "Full Control" permission for the Program Files folder
in Windows 7 or later.

     Now VFP C++ Compiler will copy files from the folder C:\Program Files\Baiyujia VFP C++
Compiler\foxrun<n> to the temporary folder such as <PROJECT-FOLDER>\FOXRUNTEMP, and then
generate the C source files such as foxrun*.c in the temporary folder. After compiled
the C source files, VFP C++ Compiler will remove the temporary folder.


**************************************************
2013/12/30

VFP C++编译软件(VFP C++ Compiler)2013 RELEASE。


**************************************************
2013/9/26

下列问题已修复:

    1、更新图标资源失败问题。

--------------------------------------
   VFP C++ Compiler Update 20130926
--------------------------------------

1, Update icon resource failed problem.

Sometimes (for example, some anti-virus program), VFP C++ Compiler update icon resource failed,
then the generated executable file's icon is VFP C++ Compiler's icon.

The new VFP C++ Compiler has fixed this BUG.


**************************************************
2013/5/18

新增功能:

    1、/VCPLUGIN_MYPROTECT=ON|OFF 是否运行MyProtect插件

--------------------------------------
   VFP C++ Compiler Update 20130518
--------------------------------------

1, /VCPLUGIN_MYPROTECT=ON|OFF Run MyProtect Plugin

VFP C++ Compiler can run the specified MyProtect plugin before generate the executable file.

For more details, please refer to the vcsdk\myprotect\readme.txt.


**************************************************
2013/5/15

下列问题已修复:

    1、某些语句优化错误的问题。

--------------------------------------
   VFP C++ Compiler Update 20130515
--------------------------------------

1, Some statements Optimize Code error problem.

The old VFP C++ Compiler can Optimize Code correctly for some statements, for example,
xa=x1(x2)+x3+VAL("aa")+VAL("aaa")
but the old VFP C++ Compiler can not Optimize Code correctly for some statements such as:
xa=x1[x2]+x3+VAL("aa")+VAL("aaa")
xa=x1 (x2)+x3+VAL("aa")+VAL("aaa")
xa=x1 [x2]+x3+VAL("aa")+VAL("aaa")

The new VFP C++ Compiler has fixed this BUG.


**************************************************
2013/5/1

下列问题已修复:

    1、编译生成大的(大于100MB,但仍然小于250MB)可执行文件问题。

--------------------------------------
   VFP C++ Compiler Update 20130501
--------------------------------------

1, Compile and generate a large (greater than 100MB, but less than 250MB) executable file problem.

That is,
the old VFP C++ Compiler only can compile and generate an executable file less than 100MB,
the new VFP C++ Compiler can compile and generate an executable file less than 250MB.

For the dynamic link library file, it can greater than 250MB.
But if the dynamic link library file greater than 250MB, VFP C++ Compiler will not compress it,
because the UPX program can't compress a large executable file (or dynamic link library file)
greater than 250MB.


**************************************************
2012/12/8

VFP C++编译软件(VFP C++ Compiler)2012 RELEASE。


**************************************************
2012/12/1

下列问题已修复:

    1、编译文件时显示Command窗口问题。

--------------------------------------
   VFP C++ Compiler Update 20121201
--------------------------------------

1, The Command window will be showed when compiling files problem.

If the VFP project's version (6.0, 7.0, 8.0, 9.0, 10.0) is not the same as VFP C++ Compiler's version
(9.0, 10.0), VFP C++ Compiler will create a temporary program file <PROJECT-NAME>$VCC$.PRG:
ON ERROR *
SET TALK OFF
SET RESOURCE OFF
SET NOTIFY OFF
COMPILE ("VCTEST.PRG")
CLEAR ALL
CLOSE ALL
QUIT
and then run VFP<n>.EXE <PROJECT-NAME>$VCC$.PRG to compile files.

If the Command window is dockable (in VFP 7.0, 8.0, 9.0, 10.0),
although we call ShellExecuteEx() with SW_HIDE parameter (or _SCREEN.VISIBLE=.F.),
but the Command window will be showed.

The new VFP C++ Compiler has fixed the bug.


**************************************************
2012/11/8

新增功能:

    1、/VCINSERTINITCODE=ON|OFF 是否插入初始化代码

--------------------------------------
   VFP C++ Compiler Update 20121108
--------------------------------------

1, /VCINSERTINITCODE=ON|OFF Insert Init Code

If we set:
/VCINSERTINITCODE=OFF does not Insert Init Code

VFP C++ Compiler will insert the default init code:

IF FILE(LEFT(_VFP.SERVERNAME,RAT(".",_VFP.SERVERNAME)-1)+".DLL")
ELSE
=MESSAGEBOX(LEFT(_VFP.SERVERNAME,RAT(".",_VFP.SERVERNAME)-1)+".DLL"+"!",48,"VFP C++ Compiler")
QUIT
ENDIF
IF FILE(LEFT(_VFP.SERVERNAME,RAT(".",_VFP.SERVERNAME)-1)+".DLL").AND.;
AT(UPPE(LEFT(_VFP.SERVERNAME,RAT(".",_VFP.SERVERNAME)-1)+".DLL"),UPPE(SET("LIBRARY")))=0
SET LIBRARY TO (LEFT(_VFP.SERVERNAME,RAT(".",_VFP.SERVERNAME)-1)+".DLL") ADDITIVE
ENDIF

into the main program file.

If we set:
/VCINSERTINITCODE=ON Insert Init Code

VFP C++ Compiler will insert init code specified in the user init code file (<PROJECT-NAME>.VCI).

We can load a specified .DLL file, for example,

IF !FILE(GETENV("WINDIR")+"\SYSTEM32\VCTEST.DLL")
=MESSAGEBOX(GETENV("WINDIR")+"\SYSTEM32\VCTEST.DLL"+"!",48,"VFP C++ Compiler")
QUIT
ENDIF
IF FILE(GETENV("WINDIR")+"\SYSTEM32\VCTEST.DLL").AND.;
AT(UPPE(GETENV("WINDIR")+"\SYSTEM32\VCTEST.DLL"),UPPE(SET("LIBRARY")))=0
SET LIBRARY TO (GETENV("WINDIR")+"\SYSTEM32\VCTEST.DLL") ADDITIVE
ENDIF

We can load multiple .DLL files for multiple projects, for example,

IF FILE(SYS(5)+SYS(2003)+"\VCTEST.DLL").AND.;
AT(UPPE(SYS(5)+SYS(2003)+"\VCTEST.DLL"),UPPE(SET("LIBRARY")))=0
SET LIBRARY TO (SYS(5)+SYS(2003)+"\VCTEST.DLL") ADDITIVE
ENDIF
IF FILE(SYS(5)+SYS(2003)+"\VCTEST1.DLL").AND.;
AT(UPPE(SYS(5)+SYS(2003)+"\VCTEST1.DLL"),UPPE(SET("LIBRARY")))=0
SET LIBRARY TO (SYS(5)+SYS(2003)+"\VCTEST1.DLL") ADDITIVE
ENDIF
IF FILE(SYS(5)+SYS(2003)+"\VCTEST2.DLL").AND.;
AT(UPPE(SYS(5)+SYS(2003)+"\VCTEST2.DLL"),UPPE(SET("LIBRARY")))=0
SET LIBRARY TO (SYS(5)+SYS(2003)+"\VCTEST2.DLL") ADDITIVE
ENDIF


**************************************************
2012/10/18

下列问题已修复:

    1、DODEFAULT()函数问题。

--------------------------------------
   VFP C++ Compiler Update 20121018
--------------------------------------

1, DODEFAULT() function problem.

For the older version,
sometimes, the DODEFAULT() function will run the parent-class code twice or
will not run the parent-class code.

The new VFP C++ Compiler has fixed the bug.


**************************************************
2012/9/23

新增功能:

    1、自动使用“单步编译模式”编译ON ERROR <Command>和ON ERROR之间的语句。

--------------------------------------
   VFP C++ Compiler Update 20120923
--------------------------------------

1, Automatic use "Single Step Compile Mode" to compile the statements between
ON ERROR <Command> and ON ERROR.

For example,

ON ERROR lok = .f.
lok = .t.
THISFORM.OLecontrol1.COMmPort=99
IF lOk
    WAIT WINDOW 'port open'
    thisform.olecontrol1.Enabled=.t.
ELSE
    WAIT WINDOW 'port not open'
ENDIF
ON error

For the older version,
it will compile the vfp code:

lok = .t.
THISFORM.OLecontrol1.COMmPort=99
IF lOk
    WAIT WINDOW 'port open'
    thisform.olecontrol1.Enabled=.t.
ELSE
    WAIT WINDOW 'port not open'
ENDIF

to one C funciton __VC_TEST_xxx().

It will run all code in the C funciton __VC_TEST_xxx(),
and then generates an error,
and then call the ON ERROR handling (run the code: lok = .f.).

The new VFP C++ Compiler will automatic compile the vfp code between:

ON ERROR xxx
...
...
...
ON ERROR (or ON ERROR *, or ON ERROR &xxx)

as "Single Step Compile Mode":

ON ERROR lok = .f.
__VC_TEST_A(1)
__VC_TEST_A(2)
IF __VC_TEST_A(3)
__VC_TEST_A(4)
__VC_TEST_A(5)
ELSE
__VC_TEST_A(6)
ENDIF
ON error

then it can run fine.


**************************************************
2012/9/13

下列问题已修复:

    1、自定义属性的尾部空格问题。

--------------------------------------
   VFP C++ Compiler Update 20120913
--------------------------------------

1, The trailing spaces of the user-define property problem.

For example,

sensitive_altgr = .F.<cr><lf>
action_ctrl =  <cr><lf>
action_alt =  <cr><lf>
_memberdata = ...

There are 2 spaces between "action_ctrl =" and <cr><lf>,
the old VFP C++ Compiler will cut the 2 spaces,
it will be converted to:

sensitive_altgr = .F.<cr><lf>
action_ctrl =<cr><lf>
action_alt =<cr><lf>
_memberdata = ...

then vfp will get wrong properties of action_ctrl and action_alt.

The new VFP C++ Compiler will reserved the spaces between "action_ctrl =" and <cr><lf>.


**************************************************
2012/9/5

新增功能:

    1、支持Visual C++ 11.0(Visual Studio 2012)编译器。


**************************************************
2012/8/12

下列问题已修复:

    1、FOR EACH ... IN <collection>语句,但<collection>中没有任何元素的问题。


**************************************************
2012/7/18

新增功能:

    1、/VCFILESEARCHPATH=... 文件搜索路径

--------------------------------------
   VFP C++ Compiler Update 20120718
--------------------------------------

1, /VCFILESEARCHPATH=... File Search Path

Now you can set the file search path for class library files and header files.


**************************************************
2012/7/9

VFP C++编译软件(VFP C++ Compiler) 10.0 for Windows。

--------------------------------------
   VFP C++ Compiler Update 20120709
--------------------------------------

1, VFP C++ Compiler 10.0 for Windows.

Now VFP C++ Compiler Support for VFP Advanced.

If we set:
/VFPLIB=ON Include VFP Support Library
for VFP Advanced project,
VFP C++ Compiler compiled and generated executable file contain the code of vfpar.dll
and vfpcore.dll, so the executable file need not vfpar.dll and vfpcore.dll to run.


**************************************************
2012/4/18

下列问题已修复:

    1、重建项目时项目文件损坏的问题。
    2、编译可以用于多个项目的变量名称的简单方法。

--------------------------------------
   VFP C++ Compiler Update 20120418
--------------------------------------

1, The project file is invalid after rebuild the project.

Sometimes VFP C++ Compiler will rebuild the project, for example,
BUILD EXE ("vctest.exe") FROM ("vctest.pjx")
Someone said sometimes the project file is invalid after rebuild the project.

Now VFP C++ Compiler rebuild the executable file from a backup project file, for example,
COPY FILE ("vctest.pjx") TO ("vctest$vcproject$.pjx")
COPY FILE ("vctest.pjt") TO ("vctest$vcproject$.pjt")
BUILD EXE ("vctest.exe") FROM ("vctest$vcproject$.pjx")
Then VFP C++ Compiler will not write the original project file.

2, The simple method of Compile Variable Names for Multiple Projects.

Now to compile variable names for multiple projects is more simple, please refer to:
vctest\vctest_multiproj\readme.txt
vctest\vctest_multiproj_simple\readme.txt


**************************************************
2012/3/28

新增功能:

    1、/VCTOLARGEPROC=ON|OFF 是否编译为大程序文件格式
    2、/VCNOTDISPLAY_LARGEPROC=ON|OFF 是否不显示项目中包含的大程序文件
    3、/VCNOTDISPLAY_RELATIONALEXPR=ON|OFF 是否不显示无效的RelationalExpr表达式

--------------------------------------
   VFP C++ Compiler Update 20120328
--------------------------------------

1, /VCTOLARGEPROC=ON|OFF Compile to Large Procedure Files Format

If we set:
/VCTOLARGEPROC=ON Compile to Large Procedure Files Format
VFP C++ Compiler will compile to large procedure files format and automatically fix
the large program files BUG.

About the large procedure files format, please refer to:
baiyujia website: www.baiyujia.com/vfpdocuments/f_vhfox.asp

vfp9 procedure size >64K format

Before vfp9, procedure size <64K, use one WORD can save the size of procedure:
00-01 DW size of procedure

In vfp9, procedure size >64K possible, use one WORD and one DWORD to save the size of procedure:
00-01 DW 0
02-05 DD size of procedure

2, /VCNOTDISPLAY_LARGEPROC=ON|OFF Does Not Display the Large Program Files in the Project

About the large program files BUG, please refer to:
baiyujia website: www.baiyujia.com/vfpdocuments/f_vfp9fix2.asp

Usually, if we set:
/VCTOLARGEPROC=ON Compile to Large Procedure Files Format
then all files in the project will be compiled to large procedure files format,
so we needn't display the large program files in the project,
we can set:
/VCNOTDISPLAY_LARGEPROC=ON Does Not Display the Large Program Files in the Project

3, /VCNOTDISPLAY_RELATIONALEXPR=ON|OFF Does Not Display the Invalid RelationalExpr Expression

About the invalid relationalexpr expression BUG, please refer to:
baiyujia website: www.baiyujia.com/vfpdocuments/f_vfp9fix4.asp

4, Another vfp9 fix - LARGE PROCEDURE IN THE FORM, please refer to:
baiyujia website: www.baiyujia.com/vfpdocuments/f_vfp9fix3.asp


**************************************************
2012/3/22

新增功能:

    1、无效的RelationalExpr表达式。

--------------------------------------
   VFP C++ Compiler Update 20120322
--------------------------------------

1, Invalid RelationalExpr Expression.

About the Invalid RelationalExpr Expression BUG, Please refer to:
http://www.baiyujia.com/vfpdocuments/f_vfp9fix4.asp

If VFP C++ Compiler show the WARNING MESSAGE: Invalid RelationalExpr Expression,
we MUST fix the Invalid RelationalExpr Expression BUG.


**************************************************
2012/3/18

新增功能:

    1、/VCEXPANDEXPEVALUATE=ON|OFF 是否使用EVALUATE()函数扩展表达式
    2、/VCEXPANDEXPCHR=ON|OFF 是否使用CHR()函数扩展表达式

--------------------------------------
   VFP C++ Compiler Update 20120318
--------------------------------------

1, /VCEXPANDEXPEVALUATE=ON Expand Expression With EVALUATE() Function

To expand expression with EVALUATE() function, for example,
x1="ABC"
will be expanded to:
x1=(EVALUATE('"ABC"'))

2, /VCEXPANDEXPCHR=ON|OFF Expand Expression With CHR() Function

To expand expression with CHR() function, for example,
x1="ABC"
will be expanded to:
x1=(CHR(65)+CHR(66)+CHR(67))


**************************************************
2012/3/1

新增功能:

    1、可执行文件压缩率优化。

--------------------------------------
   VFP C++ Compiler Update 20120301
--------------------------------------

1, Executable file compression rate optimization.

Now the encrypted executable file compression rate between 10% and 30%.

IMPORTANT:

You MUST update vfpcore.dll to the version 20120301.

The vfpcore.dll version 20120301 is compatible for the programs compiled with the
old VFP C++ Compiler, that is you can update vfpcore.dll to the version 20120301,
the old programs (and the new programs) compiled with VFP C++ Compiler can run well.


**************************************************
2012/1/8

新增功能:

    1、项目中包含的大程序文件。

--------------------------------------
   VFP C++ Compiler Update 20120108
--------------------------------------

1, Large Program Files in the Project.

About the Large Program Files BUG, Please refer to:
http://www.baiyujia.com/vfpdocuments/f_vfp9fix2.asp

If VFP C++ Compiler show the WARNING MESSAGE: Large Program Files in the Project,
recommend to fixed the Large Program Files BUG.


**************************************************
2011/12/8

VFP C++编译软件(VFP C++ Compiler)2011 RELEASE。


**************************************************
2011/12/1

新增功能:

    1、/VCNAMEMULTIPROJ=ON|OFF 是否编译可以用于多个项目的变量名称

--------------------------------------
   VFP C++ Compiler Update 20111201
--------------------------------------

1, /VCNAMEMULTIPROJ=ON|OFF Compile Variable Names for Multi Project

That is we can build 2 or more projects,
then we can run the statements in test.exe such as:
DO test1.exe
DO xxx in test1.exe

Please refer to the vctest\vctest_multiproj\readme.txt.


**************************************************
2011/11/16

新增功能:

    1、/VCNAMECATEGORY=ON|OFF 是否编译类变量名称
       /VCNAMEMACRO=ON|OFF 是否编译宏变量名称

--------------------------------------
   VFP C++ Compiler Update 20111116
--------------------------------------

1, /VCNAMECATEGORY=ON|OFF Compile Category Variable Names
   /VCNAMEMACRO=ON|OFF Compile Macro Variable Names

We can Compile (or don't compile) Category (or Macro) Variable Names.

About "Variable Names List ...",
for "Only Compile Variable Names in the User Variable Names File"
and "Does Not Compile Variable Names Specified in the User Reserved Words File",
now we can input the Category Variable Names in the editbox such as:
l* && local variables
g* && public variables


**************************************************
2011/11/8

新增功能:

    1、/VCSTEP=ON|OFF 是否单步编译模式

--------------------------------------
   VFP C++ Compiler Update 20111108
--------------------------------------

1, /VCSTEP=ON|OFF Single-step Compile Mode

     The default is OFF, VFP C++ Compiler compiled many VFP statements to one C function.
     If set to ON, VFP C++ Compiler compiled only one VFP statement to one C function.

To resolved the ON ERROR, RETURN TO, RETRY statements problem,

Method 1 (the simple method):
we can set:
/VCSTEP=ON Single-step Compile Program
then VFP C++ Compiler will compile the ON ERROR, RETURN TO, RETRY statements same as VFP.

The /VCSTEP=ON|OFF option is used for all files in the project.

This method is simple, we needn't edit our code,
but the Structured Programming Commands such as:
     DO CASE ... ENDCASE
     DO WHILE ... ENDDO
     FOR EACH ... ENDFOR
     FOR ... ENDFOR
     IF ... ENDIF
     SCAN ... ENDSCAN
     TRY ... ENDTRY
will leave in the exe file (VFP code), not in the dll file (C code),
so the code security will be reduced.

Recommend to set:
/VCSTEP=ON Single-step Compile Program
for our old project,
because we needn't edit our code and the compiled code will run fine.

Please refer to:
vctest\vctest_on_error_vcstep\vctest.vcf, vctest.prg
vctest\vctest_return_to_vcstep\vctest.vcf, vctest.prg
vctest\vctest_retry_vcstep\vctest.vcf, vctest.prg

Method 2 (the recommend method):
Or we can use =[FOXSTEP ON|OFF] statement to set Single-step Compile for some files
(or some code), other files will not be Single-step Compiled.

That is we can set Single-step Compile for some code (relate to the ON ERROR, RETURN TO,
RETRY statements), the code security will be reduced.
Other code will not be Single-step Compiled, so the other code is more secure.

Please refer to:
vctest\vctest_on_error_foxstep\vctest.prg
vctest\vctest_return_to_foxstep\vctest.prg
vctest\vctest_retry_foxstep\vctest.prg

Method 3 (the old method):
we can use =[FOXRUN ON|OFF] statement to do it too.

Please refer to:
vctest\vctest_on_error\vctest.prg
vctest\vctest_return_to\vctest.prg
vctest\vctest_retry\vctest.prg


**************************************************
2011/11/1

下列问题已修复:

    1、同时运行多个报表问题。

--------------------------------------
   VFP C++ Compiler Update 20111101
--------------------------------------

1, Run more than one report at the same time problem.

I have added 2 options in the "Form and Report Compile Options":

/VCFRX_CLEANDATA_SHOW_POSITION=ON|OFF Clean Data for Show Position

     If we set (the default setting):
     /VCFRX_CLEANDATA_SHOW_POSITION=OFF does not Clean Data for Show Position
     then VFP C++ Compiler does not Clean Data for Show Position.

     Usually, we can set:
     /VCFRX_CLEANDATA_SHOW_POSITION=ON Clean Data for Show Position
     then VFP C++ Compiler will run command:
     REPLACE ALL curpos WITH .F. FOR objtype=1
     to Clean Data for Show Position.

/VCFRX_AUTORELEASEVARIABLES=ON|OFF Automatic Release Variables Defined
in Report's Procedure Init

     If we set (the default setting):
     /VCFRX_AUTORELEASEVARIABLES=OFF does not Automatic Release Variables Defined
     in Report's Procedure Init, then VFP C++ Compiler does not Automatic Release
     Variables Defined in Report's Procedure Init.

     If there is no more than one report at the same time, that is only one report
     at any time, then we can set:
     /VCFRX_AUTORELEASEVARIABLES=ON Automatic Release Variables Defined
     in Report's Procedure Init, then VFP C++ Compiler will Automatic Release Variables
     Defined in Report's Procedure Init.

For example,

SELE 0
USE t1
DEFINE WIND w1 FROM 0,0 TO 30,30
*ACTI WIND w1
REPO FORM r1 PREVIEW WIND w1 NOWAIT

SELE 0
USE t2
DEFINE WIND w2 FROM 0,40 TO 30,70
*ACTI WIND w2
REPO FORM r2 PREVIEW WIND w2 NOWAIT

...

For the code, we MUST set (the default setting):
/VCFRX_AUTORELEASEVARIABLES=OFF does not Automatic Release Variables Defined
in Report's Procedure Init


**************************************************
2011/10/1

兼容性问题修复:

    1、修复与Microsoft Virtual PC、Oracle VM VirtualBox等虚拟机软件的兼容性问题。

--------------------------------------
   VFP C++ Compiler Update 20111001
--------------------------------------

1, Fix the compatible problem with virtual machine products such as Microsoft Virtual PC
and Oracle VM VirtualBox.

If you install Microsoft Virtual PC or Oracle VM VirtualBox,
the old VFP C++ Compiler (VC.EXE) can't start.
Please update to the new VFP C++ Compiler 20111001.


**************************************************
2011/9/22

新增功能:

    1、/VCMOVEGOTO=ON|OFF 是否移动GOTO语句

--------------------------------------
   VFP C++ Compiler Update 20110922
--------------------------------------

1, /VCMOVEGOTO=ON|OFF Move GOTO Statement

     To move statement, for example,
     statement
     will be moved to:
     =[GOTO FOXRUN_GOTO_LABEL_XXX_START]
     =[FOXRUN_GOTO_LABEL_XXX_END:]
     ...
     =[FOXRUN_GOTO_LABEL_XXX_START:]
     statement
     =[GOTO FOXRUN_GOTO_LABEL_XXX_END]

If we set:
/VCMOVEGOTO=ON Move GOTO Statement
that is:
=[GOTO FOXRUN_GOTO_LABEL_XXX_START]
=[GOTO FOXRUN_GOTO_LABEL_XXX_END]
and other =[GOTO ...] statements will be moved again.


**************************************************
2011/9/5

新增功能:

    1、支持Visual C++ 10.0(Visual Studio 2010)编译器。

--------------------------------------
   VFP C++ Compiler Update 20110905
--------------------------------------

1, Support for Visual C++ 10.0.

     IMPORTANT NOTE:

     The program compiled with Visual C++ 10.0 only run on Windows XP SP2 or later.


**************************************************
2011/8/16

下列问题已修复:

    1、TRY ... ENDTRY语句问题。

--------------------------------------
   VFP C++ Compiler Update 20110816
--------------------------------------

1, About Encrypt and Compress Executable File

If we set:
/VCENCRYPT=ON Encrypt Executable File
/VCPACKEXE=ON Compress Executable File
then the Executable File can be compressed, the compression ratio is about 80%.

If we set:
/VCENCRYPT=OFF does not Encrypt Executable File
/VCPACKEXE=ON Compress Executable File
then the Executable File can be compressed very small, the compression ratio is about 20%.

If we set:
/VCENCRYPT=OFF does not Encrypt Executable File
/VCPACKEXE=OFF does not Compress Executable File
then the Executable File can't be compressed,
but you can use other third-party VFP encryption products such as DeFox and FoxShell to
encrypt/compress the Executable File.

2, TRY ... ENDTRY statement problem.

An example from DV_FOXHELP9.CHM:

CLEAR
ON ERROR DO errorHandler && Create a functional error handler to test.
oMyObject=CREATEOBJECT("myClass")
oMyObject.myMethod1()
* oMyObject.myMethod2()  && Remove comment character to test this line.

DEFINE CLASS myClass AS Custom

   PROCEDURE myMethod1
      ? "myMethod1"
      TRY
         ? "Calling myMethod2 in TRY block for myMethod1."
         THIS.myMethod2()
      CATCH TO omyError
         ? "Entered CATCH block for myMethod1. Caught: ", ;  
            omyError.ErrorNo, " ", omyError.Message
      ENDTRY
   ENDPROC

   PROCEDURE myMethod2
      ?
      ? "myMethod2"
      ? "Generating an error in myMethod2."
      x=y         && Variable y does not exist. CATCH handles this error.
      ? "This line displays if CATCH does not handle the prece* error."
   ENDPROC
ENDDEFINE

If we call myMethod2() in a TRY ... ENDTRY block,
      ? "This line displays if CATCH does not handle the prece* error."
will not be run.

If we call myMethod2() not in a TRY ... ENDTRY block,
      ? "This line displays if CATCH does not handle the prece* error."
will be run.

I have found a useful function SYS(2410) - Error Handler can resolved this problem.

when occurs an error,

if SYS(2410)='1' then call _Error(), the next statements will not be run.

else

the next statements in the C function will be run continue,
at the end, call the _Error(), then jump to the error process program.

Now VFP C++ Compiler can run TRY ... ENDTRY code same as VFP.


**************************************************
2011/8/1

新增功能:

    1、表单、报表编译选项。

--------------------------------------
   VFP C++ Compiler Update 20110801
--------------------------------------

1, Form and Report Compile Options.

For more details, please refer to others\readme*.txt.

IMPORTANT:

     Some program use a TextBox object to call a UDF function and set Print When is Flase,
     so the UDF function can be called normal, but not print anything in the report.
     In this case, we can't Delete Data When Print When is Flase, so we MUST set:
     /VCFRX_DELETEDATA_WHEN_PRINTWHENISFALSE=OFF does not Delete Data When Print When
     is Flase (Supexpr==".F.")

The old VFP C++ Compiler will automatic Delete Data When Print When is Flase.
So please update to the new VFP C++ Compiler 20110801.

2. Please Download VFP C++ Compiler Runtime Library from:
   http://www.baiyujia.com/f_downloadproc_vclib.asp
   the password is www.baiyujia.com.

Compress options in make_packexe.bat and make_packdll.bat have changed to:
upx --best --compress-icons=0 %1

If we set:
/VCENCRYPT=OFF does not Encrypt Executable File
then the Executable File can be compressed very small,
it's about 15% of the original file size.

3. If you use Mycheck SDK and selected C/C++ compiler file is foxrun8\make.bat or foxrun9\make.bat,
   for some reasons about SEH, the dll code can't run correctly on Windows XP.
   The new VFP C++ Compiler 20110801 has fixed this BUG.

If we select Visual C++ 8.0/9.0 to compile foxrun*.c,
then the foxrun.dll include the IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG data,
the IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG save some reserved SEH data,
and it is only used on Windows NT, Windows 2000 and Windows XP.

The new VFP C++ Compiler 20110801 will clear the IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG data,
then the program can run correctly on Windows XP (and Windows vista and Windows 7 and after).


**************************************************
2011/7/25

新增功能:

    1、设置=[FOXRUN OFF]后,扩展代码无效。

--------------------------------------
   VFP C++ Compiler Update 20110725
--------------------------------------

1, EXTENDED CODE is not available when set =[FOXRUN OFF].

For example,
in the vctest.prg:
...
=[foxrun off]
...
=[include mycheck_isdebuggerpresent.c]
...
=[foxrun on]
...

The statement:
=[include mycheck_isdebuggerpresent.c]
it is only a normal VFP statement, and it do nothing.

The new version VFP C++ Compiler will write a warning message to the vctest.err:
EXTENDED CODE is not available when set =[FOXRUN OFF].
=[include mycheck_isdebuggerpresent.c]


**************************************************
2011/6/26

新增功能:

    1、/APPERROR=ON|OFF 是否应用程序错误日志文件

--------------------------------------
   VFP C++ Compiler Update 20110626
--------------------------------------

1, VFP C++ Compiler version 20110401-20110625 has a BUG:

IF x1>0 ; && xxx
and x2>0 && xxx
...

the old VFP C++ Compiler can't process these statements correctly.

Please update to the new version VFP C++ Compiler 20110626.

2, New Functions: /APPERROR=ON|OFF Application Error Log File

Usually, the code:

?x1
?x2
?x3

VFP C++ Compiler only return the last error:
Variable "x3" is not found

If we set:
/APPERROR=ON Application Error Log File
and then compile the project,
and then run the application,
it will generate an Error Log File include all errors, like:
06/27/11 08:02:50 AM VCTEST: (170) ?X1 
06/27/11 08:02:50 AM VCTEST: (170) ?X2 
06/27/11 08:02:50 AM VCTEST: (170) ?X3 
now we can know it occurs 3 errors.

the function is only used for test/debug,
and please set:
     /VCOPT=OFF does not Optimize Code
     /VCOPT2=OFF does not Optimize Code Level II
because if we set:
     /VCOPT=ON Optimize Code
     /VCOPT2=ON Optimize Code Level II
the error message in the Error Log File is p-code data,
it is hard to understand.


**************************************************
2011/6/1

下列问题已修复:

    1、修复“资源文件不匹配”错误。


**************************************************
2011/5/18

新增功能:

    1、数据对齐:1字节、2字节、4字节、8字节、16字节。


**************************************************
2011/5/1

新增功能:

    1、/VCOPT2=ON|OFF 是否优化代码Ⅱ。
    2、支持Windows 7(x86/x64)。

--------------------------------------
   VFP C++ Compiler Update 20110501
--------------------------------------

1, /VCOPT2=ON|OFF Optimize Code Level II.

If we set /VCOPT=ON,
VFP C++ Compiler will Optimize the _Execute() function.

If we set /VCOPT2=ON,
VFP C++ Compiler will Optimize the _Evaluate() function,
then the generated code is smaller and run faster.

2, Support for Windows 7 (x86/x64).

The new version only fix some directories access problem such as:
C:\Windows\System32 and C:\Windows\SysWOW64,
C:\Program Files and C:\Program Files (x86),
then VFP C++ Compiler can normal run on Windows 7 x64 system.
VFP C++ Compiler is a 32-bit program.


**************************************************
2011/4/6

新增功能:

    1、移动语句编译速度优化。

--------------------------------------
   VFP C++ Compiler Update 20110406
--------------------------------------

1. Move Statement compiled speed optimization.

Now VFP C++ Compiler is faster when Move Statement for large program.


**************************************************
2011/3/6

新增功能:

    1、局部编译选项。

--------------------------------------
   VFP C++ Compiler Update 20110306
--------------------------------------

1. LOCAL COMPILE OPTION.

We can set a higher (or lower) encryption options for some code,
please refer to vcsdk\mycheck\mycheck.prg.


**************************************************
2011/2/22

新增功能:

    1、/VCSCXINITMODLIST=... 表单对象属性转换为INIT事件代码模数列表
    2、/VCFRXINITMODLIST=... 报表表达式转换为数据环境INIT事件代码模数列表


**************************************************
2011/2/18

新增功能:

    1、/VCNAMEONLYVCV=ON|OFF 是否仅编译用户变量名称文件中指定的变量名称
    2、/VCNAMEEXCLUDEVCW=ON|OFF 是否不编译用户保留字文件中指定的变量名称


**************************************************
2011/1/1

新增功能:

    1、支持DeFox、FoxShell等第三方VFP加密软件。

--------------------------------------
   VFP C++ Compiler Update 20110101
--------------------------------------

1. Support third-party VFP encryption products such as DeFox and FoxShell.

Please don't select "Encrypt Executable File",
then VFP C++ Compiler will generate a standard VFP executable file,
then we can use DeFox or FoxShell to encrypt it.


**************************************************
2010/12/8

VFP C++编译软件(VFP C++ Compiler)2010 RELEASE。


**************************************************
2010/11/18

下列问题已修复:

    1、如果项目已经移动,则自动更新项目。
    2、Mycheck问题修复。


**************************************************
2010/10/8

新增功能:

    1、VFP C++编译软件开发工具包。


**************************************************
2010/10/1

新增功能:

    1、/VCPACK=ON|OFF 是否打包可执行文件


**************************************************
2010/9/1

新增功能:

    1、压缩动态链接库文件优化。


**************************************************
2010/8/8

下列问题已修复:

    1、项目中包含重复文件问题。


**************************************************
2010/7/28

新增功能:

    1、/VCFASTDECOMPIFCONDNUMBER=n 快速分解IF语句条件个数
    2、/VCFASTDECOMPIFRECURSELEVEL=n 快速分解IF语句递归级数
    3、/VCFASTDECOMPIFCODELINENUMBER=n 快速分解IF语句代码行数
    4、/VCFASTDECOMPIFCODELENGTH=n 快速分解IF语句代码长度
    5、/VCFASTDECOMPDOCASECASENUMBER=n 快速分解DO CASE语句CASE个数
    6、/VCFASTDECOMPDOCASECONDNUMBER=n 快速分解DO CASE语句条件个数
    7、/VCFASTDECOMPDOCASERECURSELEVEL=n 快速分解DO CASE语句递归级数
    8、/VCFASTDECOMPDOCASECODELINENUMBER=n 快速分解DO CASE语句代码行数
    9、/VCFASTDECOMPDOCASECODELENGTH=n 快速分解DO CASE语句代码长度


**************************************************
2010/7/11

新增功能:

    1、内联C语句
    2、内联汇编语句
    3、包含C文件
    4、包含汇编文件


**************************************************
2010/7/1

新增功能:

    1、/VCANTIDISASM=ON|OFF 是否防止反汇编


**************************************************
2010/6/11

兼容性问题修复:

    1、忽略CASE、DO WHILE、FOR EACH、FOR、IF、SCAN等语句尾部的THEN、DO命令:
    CASE ... [THEN | DO]
    DO WHILE ... [THEN | DO]
    FOR EACH ... [THEN | DO]
    FOR ... [THEN | DO]
    IF ... [THEN | DO]
    SCAN ... [THEN | DO]


**************************************************
2010/5/1

下列问题已修复:

    1、支持数字签名。


**************************************************
2010/4/15

新增功能:

    1、表单类文件编译速度优化。


**************************************************
2010/4/5

新增功能:

    1、/VCNAMETYPE=4|5 变量名称编码类型:MD5编码-16|32字符


**************************************************
2010/3/12

新增功能:

    1、<项目名称>.VCD2:在字符串定界符内的变量名称列表文件


**************************************************
2010/2/1

新增功能:

    1、/VCEXPANDINLINE=ON|OFF 是否展开内联函数


**************************************************
2010/1/1

新增功能:

    1、/VCMOVE=ON|OFF 是否移动语句


**************************************************
2009/12/28

VFP C++编译软件(VFP C++ Compiler)2009 RELEASE。


**************************************************
2009/11/18

下列问题已修复:

    1、分解复合条件语句时条件为空值(.NULL.)问题。


**************************************************
2009/10/25

VFP C++编译软件(VFP C++ Compiler) 9.00 for Windows。


**************************************************
2009/10/20

新增功能:

    1、/VCKEYWORD=ON|OFF 是否编译关键字


**************************************************
2009/10/15

新增功能:

    1、/VCPACKEXE=ON|OFF 是否压缩可执行文件


**************************************************
2009/10/1

新增功能:

    1、更多编译选项。


**************************************************
2009/9/18

下列问题已修复:

    1、FOR EACH ... IN <collection>语句问题。


**************************************************
2009/9/8

新增功能:

    1、/VCENCRYPT=ON|OFF 是否加密可执行文件


**************************************************
2009/8/28

新增功能:

    1、标号和GOTO语句。


**************************************************
2009/8/18

新增功能:

    1、/VCDECOMPCOND=ON|OFF 是否分解复合条件语句

下列问题已修复:

    1、在某些情况下编译生成的DLL文件用SET LIBRARY TO加载失败。


**************************************************
2009/8/5

新增功能:

    1、支持大项目分割为多个函数库合并编译。


**************************************************
2009/7/22

新增功能:

    1、/VCEXPANDEXP=ON|OFF 是否使用IIF()函数扩展表达式


**************************************************
2009/4/26

兼容性问题修复:

    1、忽略ENDIF、ENDCASE、ENDDO、ENDFOR、ENDSCAN、ENDTRY等语句之后的注释。
    2、忽略#IF .F.与#ELIF、#ELSE、#ENDIF之间的注释或语句。
    3、忽略#INCLUDE指定的头文件(.h)中的非预处理命令。


**************************************************
2009/3/26

下列问题已修复:

    1、QUIT、CANCEL语句未执行ON SHUTDOWN例程问题。


**************************************************
2009/1/15

新增功能:

    1、支持COM服务程序编译。


**************************************************
2009/1/10

新增功能:

    1、/APPDEBUG=ON|OFF 是否应用程序调试模式


**************************************************
2008/12/28

VFP C++编译软件(VFP C++ Compiler)2008 RELEASE。


**************************************************
2008/12/20

下列问题已修复:

    1、\、\\语句行尾的;问题。
    2、#INCLUDE "FILENAME"('FILENAME'、[FILENAME])语句问题。
    3、DEFINE CLASS定义的属性位于PROCEDURE|FUNCTION之后的问题。
    4、#DEFINE编译速度优化。


**************************************************
2008/12/8

下列问题已修复:

    1、RETURN @语句问题。
    2、RETURN <对象变量>语句问题。
    3、SET DEVELOPMENT ON语句问题。
    4、_ACCESS方法问题。
    5、_ASSIGN方法问题。


**************************************************
2008/12/1

新增功能:

    1、支持项目中包含FXP/APP/EXE文件。
    2、主界面中增加“调试模式”。


**************************************************
2008/11/10

新增功能:

    1、支持Visual C++ 9.0(Visual Studio 2008)编译器。


**************************************************
2008/10/1

新增功能:

    1、支持版本信息。


**************************************************
2008/8/31

下列问题已修复:

    1、在某些情况下编译处理时程序可能会停止响应。

新增功能:

    1、支持多个API函数库合并编译。


**************************************************
2008/8/8

新增功能:

    1、VFP运行库已包含:简体中文VFP运行库、繁体中文VFP运行库、英文VFP运行库。


**************************************************
2008/6/13

新增功能:

    1、/VCOPT=ON|OFF 是否优化代码


**************************************************
2008/5/25

新增功能:

    1、/VCPACKDLL=ON|OFF 是否压缩动态链接库文件


**************************************************
2008/5/15

新增功能:

    1、新增优化编译功能,部分语句(如x=x+1等)优化编译后比VFP自然编译运行速度更快!


**************************************************
2008/3/15

下列问题已修复:

    1、#DEFINE定义的表达式中的变量问题。

新增功能:

    1、防止FoxTools反编译。


**************************************************
2008/2/15

下列问题已修复:

    1、代码页错误地更改为当前操作系统代码页。
    2、PRIVATE ALL后不能访问__VC*等PUBLIC变量。
    3、QUIT、CANCEL后不能退出VFP问题。
    4、使用相对路径访问文件问题。
    5、表单使用扩展属性问题。
    6、表单Init事件包含PARAMETERS语句问题。
    7、报表自动打开数据环境中的表问题。
    8、类库Top、Left、Height、Width属性问题。

新增功能:

    1、保留字新增FOXTOOLS.FLL函数名及常用WIN32API函数名,DECLARE申明的API函数名也是保留字。
    2、/VCLIB=ON|OFF 是否包含VC运行库,VC运行库位于System目录下。
    3、语言选项LANGUAGE=CN|CHS|CHT|EN。


********** END OF HISTORY.TXT ********************