forcal
Forcal是一个可以对字符型表达式进行编译计算的动态库,表达式中可以使用的运算符有+、-、*、/、^、>、>=、<、<=、==、!=、&、|、!、++、--等等,Forcal具有数值计算、逻辑运算、关系运算、字符数据处理、流程控制、函数调用等许多的可编程功能。
Forcal用多键值字符串键树保存和检索数据信息,可以用Forcal保存和检索任意类型的数据,存储效率高,且具有很高的查找效率。
Forcal有许多内置的基本函数(一级函数和二级函数),不过你可以使用(C/C++)、Delphi、FORTRAN等编译器方便地扩充这些基本函数(二级函数),你可以让这些函数完成不同凡响的功能。
Forcal支持整数、实数和复数三种类型的表达式,你可以使用这些表达式在Forcal中设计自定义的函数。
Forcal在调用扩充的或自定义的函数时,就象调用系统内置的函数一样,没有任何分别。
Forcal对所有的函数都支持递归调用,不管这些函数是系统内置的,扩充的,还是自定义的。
Forcal在调用函数时,既支持传值调用,也支持传址调用(引用调用),当采用后一种方式时,可以从函数返回更多的值。
Forcal对代码进行尽可能的优化,因而运行速度也非常地出色,一级函数的计算速度约为(C/C++)或FORTRAN速度的50%左右,二级函数的速度稍有降低。
Forcal编译系统支持模块化编译,对设计复杂的软件项目很有帮助。
Forcal编译系统可以对编译时出错的位置进行准确定位,排除错误非常方便。
Forcal用Win32标准函数调用方式(stdcall调用协议)输出了动态库函数,可供C/C++、VB、delphi、FORTRAN等程序使用。
很容易对Forcal进行功能扩展, Forcal扩展动态库中仅有一个输出函数 ForcalDll(...),设计和应用都很方便。可用C/C++、delphi、FORTRAN等语言设计Forcal扩展动态库。
Forcal运行要求Forcal32.dll V8.0 用VS 2008编译生成,动态库版本需要MSVC运行库的支持,静态库版本不需要。软件包中提供了Forcal的两种版本。Forcal动态库版本文件小于100K,静态库版本约200K~300K。 使用Forcal动态库时若程序不能正常运行,需要用户自行安装所需的MSVC运行库,安装方法从网上可以查到,本软件包中不再提供。强烈建议使用Forcal的动态库版本。
由于VS 2008的编译机制所限制,Forcal32.dll V8.0不能在Windows98中运行。
从Forcal V7.0进行升级与Forcal V7.0相比,Forcal V8.0的性能有了很大提升,使用方法也有所不同,如下所示:
软件用户:
1.标识符区分大小写。这是与Forcal V7.0的最大不同。
2.增加了冒号运算符,与逗号运算符完全相同。
3.增加了自动静态变量free,用以支持表达式销毁前的释放工作。
4.可以用const函数定义永久性常量和暂时性常量。
5.整数表达式中增加了求模运算符“%”,取消了乘方运算符“^”,乘方运算用函数pow实现,取消了求模函数mod。
6.单目运算符-(负)与双目运算符^(乘方)需用括号区分计算的先后顺序。如:(-2)^2或-(2^2)。
7.取消了内置数组,由FcData中的数组代替。
8.增加了转义字符xNN,支持16进制输入。
9.增加了函数GetCalByte,可以获得调用其他类型表达式或其他类型二级函数时计算结果的按字节拷贝值。
10.增加了类成员运算符(函数参数运算符)。
11.增加模块命名空间。
编程用户:
1.获得和设置FORCAL运行错误的函数GetRunErr和SetRunErr有变化,以支持更详细的出错信息。
2.增加模块加锁函数LockModule,支持更健壮的大型程序设计。
3.编译表达式函数RealCom、RealCom和ComplexCom的第二个参数的意义有变化,与增加模块加锁功能有关。
4.删除表达式函数DeleteFor的功能有变化,与自动静态变量free配合,支持表达式销毁前的释放工作。
5.取消了获得数组信息函数GetArray,由FcData中的数组代替。
6.键树操作函数InsertKey、SearchKey、DeleteKey和DeletePrivateKey的第二个参数意义有变化,可支持含NULL字符的数据存储查询操作。函数EnumKeyTypeValue的最后一个参数回调函数的参数有变化,可以返回含NULL字符的数据。
7.信息交换函数ExMsgWithForcal的参数意义有变化。
8.增强了获得表达式信息函数GetFor的功能。
Forcal 后续版本计划1.Forcal V9.0:与Forcal V8.0功能基本相同,但为Unicode版本,很可能增加支持汉字等多国语言的标识符。预计在2009年夏天完成该版本。
2.Forcal V10.0:与Forcal V8.0功能基本相同,仍是ANSI版本,但升级为Forcal V8.0的64位版本。预计将在更晚些时候完成。
3.Forcal V11.0:与Forcal V8.0功能基本相同,但为Unicode版本,且升级为Forcal V8.0的64位版本,很可能增加支持汉字等多国语言的标识符。预计将在更晚些时候完成。
4.Forcal的Linux版本,预计将在更晚些时候完成。