欢迎访问 Forcal数学软件 主站 我要安家站 6to23站 给我留言:csdn blog 百度空间
FORCAL.DLL V7.0 编程指南
目 录
1 输出函数2 简单计算3 FORCAL二级函数设计4 FORCAL的基本用法5 用FORCAL保存和检索数据
FORCAL用Win32标准函数调用方式(stdcall调用协议)输出了动态库函数,可供C/C++、VB、delphi、FORTRAN等程序使用。
除了GetRunErr()、TestRunErr()和SetRunErr()三个函数外,其余的函数只能在单线程中使用(不允许两个及两个以上的线程同时运行这些函数),在设计多线程应用程序时必须注意这一点。
在以下的说明中,fcINT被定义为长整型long,即:
typedef long fcINT;
1 输出函数 [返回页首]
1.1 版本信息函数
const char * _stdcall ForcalVer(void);
1.2 初始化FORCAL
bool _stdcall InitForcal(void);
在使用Forcal前必须先用该函数进行初始化。初始化成功时返回true,否则返回false。 可在任何时刻使用该函数对Forcal进行重新初始化,使Forcal恢复到第一次调用该函数时的状态。
1.3 释放FORCAL
void _stdcall FreeForcal(void);
只要使用了FORCAL动态库函数,在卸载动态库之前,必须用该函数释放动态库。
1.4 获得FORCAL运行错误
void _stdcall GetRunErr(int &ForType,char *&FunName,int &ErrCode);
ForType返回运行错误的类型。ForType=0:没有运行错误;ForType=1:整数表达式运行错误;ForType=2:实数表达式运行错误;ForType=3:复数表达式运行错误;ForType=其它值:其它类型运行错误。 FunName:返回出错函数名。 ErrCode:返回错误代码。
FORCAL在运行时,将记录出现的第一个运行错误。 通常在编译表达式前后和执行表达式前后使用该函数。使用该函数后,FORCAL将恢复为无错状态。 在编译和执行表达式后使用该函数,是为了检测发生的运行错误。之所以还要在编译和执行表达式前使用该函数(在编译和执行表达式前,应保证没有运行错误,如果确信无错,也可以不用该函数),是因为该函数可将FORCAL恢复为无错状态;当然,也可以用SetRunErr()函数直接设为无错状态。
1.5 测试FORCAL运行错误
int _stdcall TestRunErr(void);
该函数返回FORCAL运行错误的类型,当返回0时表示没有错误。该函数仅仅测试是否有运行错误,并不改变错误的状态。 通常在二级函数设计中要用到该函数。
1.6 设置FORCAL运行错误
void _stdcall SetRunErr(int ForType,char *FunName,int ErrCode );
ForType:设置运行错误的类型。ForType=1:整数表达式运行错误; ForType=2:实数表达式运行错误; ForType=3:复数表达式运行错误; ForType=其它值:其它类型运行错误。 FunName:设置出错的函数名。 ErrCode:设置错误代码。
在设计自定义的二级函数时,可以用该函数设置FORCAL运行错误。由于FORCAL只保存出现的第一个运行错误,因此在设置之前,先用TestRunErr(stdTestRunErr)函数测试是否出现过运行错误,如果还没有出现,可以进行设置,否则,不能进行设置。
FORCAL允许另一个线程修改运行时的出错状态,以便退出FORCAL运行,因此可在其它线程中使用SetRunErr()函数设置运行错误。
1.7 编译实数表达式
int _stdcall RealCom(char *ForStr,fcINT nModule,void *&hFor,fcINT &nPara,double *&Para,fcINT &ErrBegin,fcINT &ErrEnd);
ForStr:字符串表达式。 nModule:模块号。 hFor:表达式句柄,标识一个表达式,计算表达式的值时要用到该参数。该参数必须为变量,不能为常量。 nPara:该参数必须为变量,不能为常量。该参数返回表达式的自变量个数。当nPara=-1时表示有0个自变量,当nPara=0时表示有1个自变量,当nPara=1时表示有2个自变量,依次类推。 Para:该参数必须为变量,不能为常量。该参数返回用于输入自变量的数组指针。计算表达式的值时要用到该参数。当然,也可以不用该参数,而用自己的数组输入自变量。 ErrBegin:该参数必须为变量,不能为常量。该参数返回出错的初始位置。 ErrEnd:该参数必须为变量,不能为常量。该参数返回出错的结束位置。 该函数返回编译代码,当返回值为0时,表示没有错误,当返回其它值时,表示存在编译错误,出错位置由ErrBegin和ErrEnd确定。编译错误代码的意义如下:
-1:在共享版中,编译表达式的长度受到限制! 0:没有错误,编译成功! 1:内存分配失败! 2:括号不成对! 3:(等号后)没有表达式! 4:复数表达式中不能使用i作为参数! 5:字符串中转义字符错误! 6:字符串无效,即"..."不匹配! 7:不可识别字符! 8:表达式名称定义错误! 9:不可识别的自变量,自变量只能以字母或下画线开头! 10:不可识别的自变量定义方法,“(,:,:,:,:,...)”冒号过多! 11:自变量定义错误! 12:continue()函数只能有0个参数! 13:只能在while,until中使用continue函数! 14:break()函数只能有0个参数! 15:只能在while,until中使用break函数! 16:if,while,until,which中的参数个数至少为2个! 17:表达式中的数字错误! 18:&单目取地址运算符只能用于单独的变量! 19:单目运算符++、--错误! 20:括号内没有数字! 21:单目运算符+、-、!错误! 22:赋值“=”错误! 23:不正确的运算方式或其他语法错误! 24:不可识别变量名! 25:不可识别函数名! 26:一级函数只能有一个参数! 27:二级函数参数不匹配! 28:***未定义***! 29:(模块中)表达式有重名! 30:***未定义***! 31:***未定义***! 32:调用整数表达式时参数不匹配! 33:调用实数表达式时参数不匹配! 34:调用复数表达式时参数不匹配! 35:自变量重名! 36:因检测到运行错误而退出!
通常在编译前用SetRunErr()函数或GetRunErr()函数使FORCAL处于无错状态,编译后用GetRunErr()检测运行错误。其他线程的错误设置可使FORCAL退出漫长的编译过程,返回错误代码36。
FORCAL支持表达式的模块化编译。在用FORCAL编译表达式时,要给该表达式指定一个模块号,模块号用整数进行标识。
在FORCAL中,一个模块由一个或多个表达式组成。模块用一个整数标识,整数可正可负,只要绝对值相等,就属于同一个模块。一般用正整数表示该模块名。模块共有两类,即主模块(0#模块)和普通模块(其他标号的模块)。
同一模块中,模块号为负的表达式只能访问(即调用)本模块的表达式,同时也只有本模块的表达式能访问到,模块号为正的表达式,既可以访问本模块内的表达式,也可以访问其他模块中(主模块除外)所有模块号为正的表达式。FORCAL的这种规定说明,具有负模块号的表达式在其他模块中是不可见的,起到了信息保护的作用。
FORCAL规定,主模块可以访问本模块中或其他模块中所有模块号为正的表达式。因此,主模块常常用在主程序中。
1.8 计算实数表达式的值
double _stdcall RealCal(void *hFor,double *d);
计算实数表达式hFor,hFor是实数表达式的句柄;数组d中依次存放自变量,参数d不可为NULL。可以用任意的数组存放自变量参数。 如果该表达式是简单模块中的表达式,则数组d中的自变量在函数调用过程中始终保持不变,否则该自变量可能被重新赋值。 通常在计算前用SetRunErr()函数或GetRunErr()函数使FORCAL处于无错状态,计算后用GetRunErr()检测运行错误。
1.9 编译整数表达式
int _stdcall IntCom(char *ForStr,fcINT nModule,void *&hFor,fcINT &nPara,long *&Para,fcINT &ErrBegin,fcINT &ErrEnd);
ForStr:字符串表达式。 nModule:模块号。 hFor:表达式句柄,标识一个表达式,计算表达式的值时要用到该参数。该参数必须为变量,不能为常量。 nPara:该参数必须为变量,不能为常量。该参数返回表达式的自变量个数。当nPara=-1时表示有0个自变量,当nPara=0时表示有1个自变量,当nPara=1时表示有2个自变量,依次类推。 Para:该参数必须为变量,不能为常量。该参数返回用于输入自变量的数组指针。计算表达式的值时要用到该参数。当然,也可以不用该参数,而用自己的数组输入自变量。 ErrBegin:该参数必须为变量,不能为常量。该参数返回出错的初始位置。 ErrEnd:该参数必须为变量,不能为常量。该参数返回出错的结束位置。 该函数返回编译代码,当返回值为0时,表示没有错误,当返回其它值时,表示存在编译错误,出错位置由ErrBegin和ErrEnd确定。 通常在编译前用SetRunErr()函数或GetRunErr()函数使FORCAL处于无错状态,编译后用GetRunErr()检测运行错误。
其它请参考“1.7 编译实数表达式”中的说明。
1.10 计算整数表达式的值
long _stdcall IntCal(void *hFor,long *d);
计算整数表达式hFor,hFor是整数表达式的句柄;数组d中依次存放自变量,参数d不可为NULL。可以用任意的数组存放自变量参数。 如果该表达式是简单模块中的表达式,则数组d中的自变量在函数调用过程中始终保持不变,否则该自变量可能被重新赋值。 通常在计算前用SetRunErr()函数或GetRunErr()函数使FORCAL处于无错状态,计算后用GetRunErr()检测运行错误。
1.11 编译复数表达式
int _stdcall ComplexCom(char *ForStr,fcINT nModule,void *&hFor,fcINT &nPara,_complex *&Para,fcINT &ErrBegin,fcINT &ErrEnd);
ForStr:字符串表达式。 nModule:模块号。 hFor:表达式句柄,标识一个表达式,计算表达式的值时要用到该参数。该参数必须为变量,不能为常量。 nPara:该参数必须为变量,不能为常量。该参数返回表达式的自变量个数。当nPara=-1时表示有0个自变量,当nPara=0时表示有1个自变量,当nPara=1时表示有2个自变量,依次类推。 Para:该参数必须为变量,不能为常量。该参数返回用于输入自变量的数组指针。计算表达式的值时要用到该参数。当然,也可以不用该参数,而用自己的数组输入自变量。 ErrBegin:该参数必须为变量,不能为常量。该参数返回出错的初始位置。 ErrEnd:该参数必须为变量,不能为常量。该参数返回出错的结束位置。 该函数返回编译代码,当返回值为0时,表示没有错误,当返回其它值时,表示存在编译错误,出错位置由ErrBegin和ErrEnd确定。 通常在编译前用SetRunErr()函数或GetRunErr()函数使FORCAL处于无错状态,编译后用GetRunErr()检测运行错误。
其它请参考“1.7 编译实数表达式”中的说明。
1.12 计算复数表达式的值
_complex _stdcall ComplexCal(void *hFor,_complex * d);
计算复数表达式hFor,hFor是复数表达式的句柄;数组d中依次存放自变量,参数d不可为NULL。可以用任意的数组存放自变量参数。 如果该表达式是简单模块中的表达式,则数组d中的自变量在函数调用过程中始终保持不变,否则该自变量可能被重新赋值。 通常在计算前用SetRunErr()函数或GetRunErr()函数使FORCAL处于无错状态,计算后用GetRunErr()检测运行错误。
1.13 设置外部二级函数
int _stdcall SetFunction(int FunType,char *FunName,void *Fun,fcINT ParaNum);
FunType:二级函数类型。只能取Key_IntFunction(标识整数二级函数)、Key_RealFunction(标识实数二级函数)、Key_ComplexFunction(标识复数二级函数)。这三个标识符的值在头文件FORCAL7.h中定义。 FunName:二级函数名称,要符合Forcal标识符的命名规定。 Fun:二级函数指针。整数、实数、复数二级函数的函数说明格式如下:
long IntFun(fcINT m,long *Para,void *hFor); //FORCAL标准整数二级函数; double RealFun(fcINT m,double *Para,void *hFor); //FORCAL标准实数二级函数; _complex ComplexFun(fcINT m,_complex *Para,void *hFor);//FORCAL标准复数二级函数;
其中m为Forcal传递给该函数的实际的参数个数,-1表示有0个自变量,0表示有1个自变量,依次类推。Para为存放参数的数组。hFor为调用该函数的表达式句柄(与编译表达式时返回的表达式句柄并不相同)。 在FORCAL表达式中,函数的一般形式为FunName(X1,X2,...,Xn)。 ParaNum:存放二级函数的自变量个数。数组ParaNum的对应项存放每个函数的自变量个数,其中-2表示有不确定的多个自变量,-1表示有0个自变量,0表示有1个自变量,依次类推。 该函数返回值的意义如下:
0:设置成功。 1:已存在该函数。 2:内存分配失败。 3:不能用空字符串作为函数名。 4:非法的二级函数类型标识。
例子:
double _stdcall asd(fcINT ,double *,void *); //自定义实数二级函数; SetFunction(Key_RealFunction,"asd",asd,2); //设置实数二级函数;
注意:
1、在设计二级函数时,通常要用SetRunErr(...)向FORCAL报告运行错误。 2、通常在初始化FORCAL之后,立即进行二级函数的设置。 3、设计二级函数必须使用_stdcall调用协议(Win32标准函数调用方式)。
1.14 设置常量
int _stdcall SetConst(int ConstType,char *ConstName,void *ConstValue);
ConstType:常量类型。只能取Key_IntConst(标识整数常量)、Key_RealConst(标识实数常量)、Key_ComplexConst(标识复数常量)。这三个标识符的值在头文件FORCAL7.h中定义。 ConstStr:常量名,要符合Forcal标识符的命名规定。 ConstValue:指向常量的值的指针。 该函数返回值的意义如下:
0:设置成功。 1:已存在该常量。 2:内存分配失败。 3:不能用空字符串作为常量名。 4:非法的常量类型标识。
例如:
double *pi=3.14; //设置常量的值; SetConst(Key_RealConst,"pi",pi); //设置常量;
1.15 删除常量或二级函数
void _stdcall DeleteConstOrFunction(int Type,char *Name);
Type:常量或函数类型。只能取Key_IntConst(标识整数常量)、Key_RealConst(标识实数常量)、Key_ComplexConst(标识复数常量)、Key_IntFunction(标识整数二级函数)、Key_RealFunction(标识实数二级函数)、Key_ComplexFunction(标识复数二级函数)。这六个标识符的值在头文件FORCAL7.h中定义。 Name:常量或函数名称,要符合Forcal标识符的命名规定。
1.16 判断一个表达式是否有效
bool _stdcall IsFor(char *ForName,int ForType,fcINT nModule,void *hFor,void *Para,fcINT PareNum);
ForName:表达式的名称。 ForType:表达式的类型。只能取Key_IntFor(标识整数表达式)、Key_RealFor(标识实数表达式)、Key_ComplexFor(标识复数表达式)。这三个标识符的值在头文件FORCAL7.h中定义。 nModule:表达式所属的模块。 hFor:表达式句柄,该句柄与编译表达式得到的表达式句柄的类型相同,可用于表达式的计算。 Para:存放表达式自变量的数组指针。 ParaNum:表达式自变量的个数。 该函数返回true时表达式有效,返回false不是一个有效的表达式。
1.17 获得表达式信息
bool _stdcall GetFor(char *ForName,int ForType,void *hFor,fcINT &nModule,void *&myFor,void *&Para,fcINT &PareNum);
ForName:所查询的表达式的名称。 ForType:所查询的表达式的类型。只能取Key_IntFor(标识整数表达式)、Key_RealFor(标识实数表达式)、Key_ComplexFor(标识复数表达式)。这三个标识符的值在头文件FORCAL7.h中定义。 hFor:从二级函数获得的表达式句柄。不能使用编译表达式得到的表达式句柄。 nModule:该参数必须为变量,不能为常量。该参数返回一个表达式所属的模块。 myFor:该参数必须为变量,不能为常量。该参数返回一个表达式句柄,该句柄与编译表达式得到的表达式句柄的类型相同,可用于表达式的计算。 Para:该参数必须为变量,不能为常量。该参数返回一个存放表达式自变量的数组指针,可用于输入自变量。 ParaNum:该参数必须为变量,不能为常量。该参数返回表达式自变量的个数。当ParaNum=-1时表示有0个自变量,当ParaNum=0时表示有1个自变量,当ParaNum=1时表示有2个自变量,依次类推。 该函数返回true时查询成功,否则返回false。 注意:只能在二级函数中使用该函数。
1.18 判断表达式的自变量是否重新赋值
bool _stdcall ParaModify(int ForType,void *vFor);
ForType:所查询的表达式的类型。只能取Key_IntFor(标识整数表达式)、Key_RealFor(标识实数表达式)、Key_ComplexFor(标识复数表达式)。这三个标识符的值在头文件FORCAL7.h中定义。 vFor:编译表达式时得到的表达式句柄。 若表达式的自变量重新赋值(仍然可以对局部变量或全局变量进行赋值),该函数返回true,否则返回false。
在程序设计中,有时如果在表达式中不对自变量进行重新赋值,可以简化程序的设计,并可加快程序的执行速度。对表达式有此要求者可用该函数进行判断。
1.19 获得表达式中的字符串
void _stdcall GetForStr(void *hFor,char *&ForStr,fcINT &StrMax);
hFor:从二级函数获得的表达式句柄。不能使用编译表达式得到的表达式句柄。 ForStr:该参数必须为变量,不能为常量。该参数返回一个字符串指针,表达式中的所有字符串的首地址都可由该指针加一个整数得到。表达式中的所有字符串都是连续存放的。 StrMax:该参数必须为变量,不能为常量。该参数返回表达式中所有字符串的总长度。 注意:只能在二级函数中使用该函数。
1.20 获得数组信息
bool _stdcall GetArray(int ArrayType,char *ArrayName,void *&Array,long &ArrayMax);
ArrayType:数组类型。只能取Key_IntArray(标识一维整数数组)、Key_RealArray(标识一维实数数组)、Key_ComplexArray(标识一维复数数组)、Key_Str(标识一维字符数组,即:字符串)。这三个标识符的值在头文件FORCAL7.h中定义。 ArrayName:数组名。 Array:该参数必须为变量,不能为常量。该参数返回一个数组指针。 ArrayMax:该参数必须为变量,不能为常量。该参数返回数组的长度。
1.21 删除一个表达式
void _stdcall DeleteFor(int ForType,void *hFor);
ForType:表达式类型。只能取Key_IntFor(标识整数表达式)、Key_RealFor(标识实数表达式)、Key_ComplexFor(标识复数表达式)。这三个标识符的值在头文件FORCAL7.h中定义。 hFor:表达式句柄,该句柄为编译表达式时获得的句柄。
1.22 插入一个键
int _stdcall InsertKey(char *KeyStr,int KeyType,void *KeyValue,void (_stdcall *DelKey)(void *),void *&NowKey);
KeyStr:键的名称。不区分大小写。 KeyType:用户自定义键的类型。该类型值的最小值为FC_Key_User。约定用FC_Key_User保存一些特殊的数据,作为多个函数、线程、动态库等之间联系的通道。FC_Key_User在头文件FORCAL7.h中定义。 KeyValue:键值。由用户定义,标识某种数据类型。 DelKey:删除该键值的函数指针。该函数由用户定义,但由Forcal调用,即:DelKey(KeyValue); 可将KeyValue删除。如果不需要Forcal删除该键值,该参数可设为NULL。 NowKey:该参数必须为变量,不能为常量。如果存在同名同类型的键,若NowKey=0,不更新键值,该参数返回已存在的键值;若NowKey!=0,更新键值。 该函数返回值的意义如下:
0:插入成功。 1:已存在该键。若NowKey=0,不更新键值,由参数NowKey返回已存在的键值;若NowKey!=0,更新键值。 2:内存分配失败。 3:不能用空字符串作为键的名称。
1.23 查找一个键
void * _stdcall SearchKey(char *KeyStr,int KeyType);
KeyStr:键的名称。不区分大小写。 KeyType:用户自定义键的类型。该类型值的最小值为FC_Key_User。FC_Key_User在头文件FORCAL7.h中定义。 如果查找成功,该函数返回键值的指针,否则返回false。
1.24 删除一个键
void _stdcall DeleteKey(char *KeyStr,int KeyType);
KeyStr:键的名称。不区分大小写。 KeyType:用户自定义键的类型。该类型值的最小值为FC_Key_User。FC_Key_User在头文件FORCAL7.h中定义。
2 简单计算 [返回页首]
2.1 使用FORCAL进行简单的整数计算
1、用InitForcal()初始化Forcal; 2、用IntCom(char *ForStr,fcINT nModule,void *&hFor,fcINT &nPara,long *&Para,fcINT &ErrBegin,fcINT &ErrEnd)编译表达式,模块号nModule根据实际情况设置; 3、用IntCal(void *hFor,long *d)计算表达式; 4、用FreeForcal()释放Forcal。
2.2 使用FORCAL进行简单的实数计算
1、用InitForcal()初始化Forcal; 2、用RealCom(char *ForStr,fcINT nModule,void *&hFor,fcINT &nPara,double *&Para,fcINT &ErrBegin,fcINT &ErrEnd)编译表达式,模块号nModule根据实际情况设置; 3、用RealCal(void *hFor,double *d)计算表达式; 4、用FreeForcal()释放Forcal。
2.3 使用FORCAL进行简单的复数计算
1、用InitForcal()初始化Forcal; 2、用ComplexCom(char *ForStr,fcINT nModule,void *&hFor,fcINT &nPara,_complex *&Para,fcINT &ErrBegin,fcINT &ErrEnd)编译表达式,模块号nModule根据实际情况设置; 3、用ComplexCal(void *hFor,_complex *d)计算表达式; 4、用FreeForcal()释放Forcal。
2.4 使用FORCAL进行简单的实数、整数和复数计算
1、用InitForcal()初始化Forcal。
2、编译表达式
用IntCom(char *ForStr,fcINT nModule,void *&hFor,fcINT &nPara,long *&Para,fcINT &ErrBegin,fcINT &ErrEnd)编译整数表达式,模块号nModule根据实际情况设置; 用RealCom(char *ForStr,fcINT nModule,void *&hFor,fcINT &nPara,double *&Para,fcINT &ErrBegin,fcINT &ErrEnd)编译实数表达式,模块号nModule根据实际情况设置; 用ComplexCom(char *ForStr,fcINT nModule,void *&hFor,fcINT &nPara,_complex *&Para,fcINT &ErrBegin,fcINT &ErrEnd)编译复数表达式,模块号nModule根据实际情况设置;
3、计算表达式
用IntCal(void *hFor,long *d)计算整数表达式; 用RealCal(void *hFor,double *d)计算实数表达式; 用ComplexCal(void *hFor,_complex *d)计算复数表达式;
4、用 FreeForcal() 释放Forcal。
3 FORCAL二级函数设计 [返回页首]
以设计实数二级函数为例进行说明,复数、整数的二级函数设计与此类似。
二级函数的一般形式是:
double _stdcall Fun2Name(fcINT n,double *d,void *hFor);
相应地,在表达式中二级函数的使用形式是:
Fun2Name(X1,X2,... ...,Xn)
数组d中依次存放各个自变量X1,X2,... ...,Xn;整数n指出自变量的个数,其大小为自变量的个数减1。
hFor是由Forcal传送过来的调用该二级函数的表达式的句柄,该句柄与编译表达式所获得的句柄不同。由该句柄可以获得更多的信息。
以下是二级函数设计中可能用到的FORCAL输出函数及注意事项:
1、用GetForStr(...)函数获得表达式中的字符串。该函数只能在二级函数内部使用。 2、用GetFor(...)函数获得各个表达式并进行计算。该函数只能在二级函数内部使用。 3、用GetArray(...)获得FORCAL数组并进行操作。 4、用TestRunErr(void)测试是否有运行错误。由于FORCAL允许另一个线程修改运行时的出错状态,以便退出FORCAL运行,因此在二级函数设计中,在可能导致无限循环的循环体内,要使用TestRunErr()函数检测运行错误,如果检测到任何错误,就退出该二级函数。 5、用SetRunErr(...)设置外部函数的运行错误。
4 FORCAL的基本用法 [返回页首]
尽管FORCAL表达式的用法可以非常灵活,但以下两种用法可能是最基本的。
4.1 动态使用字符串表达式
程序在运行过程中,动态地使用字符串表达式并进行计算。例如需要计算字符串数学表达式的值,或者执行一定的命令等。
在这种方法中,对于一种特定的运算,仅在需要的时候使用FORCAL,而其他的代码要用C/C++或FORTRAN等高级语言来写。
用这种方法得到的数值计算程序,其执行速度约为C/C++或FORTRAN执行速度的50%左右。但程序一经生成,即可脱离高级语言编译器独立运行,象使用Matlab和Mathematics一样方便。
4.2 按次序依次执行表达式进行运算
这是用FORCAL进行编程的一种方式。程序文件中的表达式用分隔符(通常用分号“;”)分隔,按某种次序依次编译各个表达式,编译成功后,按编译次序依次执行各个表达式。
无论哪种使用方式,在编译表达式前后和计算表达式前后都要检查FORCAL运行错误。
Forcal始终记着编译过的表达式,这使得同名的表达式将不能再被编译,除非你释放了该表达式所占据的空间。可以用DeleteFor(...)函数释放一个表达式所占据的空间。如果使用初始化函数InitForcal(),将连同注册的二级函数、常量、申请的数组、注册的所有自定义数据等一并删除。
5 用FORCAL保存和检索数据 [返回页首]
Forcal用多键值字符串键树保存和检索数据信息,具有存储效率高、查询速度快的优点。用户可将自定义的数据信息保存到该键树中,并与Forcal融为一体。用户可通过InsertKey(...)、SearchKey(...)、DeleteKey(...)三个函数往键树中插入、查询和删除数据信息。
版权所有© Forcal数学软件 2002-2007,保留所有权利E-mail: forcal@sina.com QQ:630715621 最近更新: 2007年01月10日
