欢迎访问 Forcal数学软件

FORCAL系统扩展动态库FcSystem

目  录

1 什么是FcSystem

2 Forcal系统函数

sys::comfor 将Forcal静态字符串编译为表达式
sys::comfors 将FcData字符串编译为表达式
sys::testfcfor 测试fcfor是否有效
sys::call 动态调用表达式
sys::  

3 操作系统函数

sys::clock 获取流逝过去的时钟脉冲数。
sys::ShellExecute 执行外部程序函数
sys::  

1 什么是FcSystem [返回页首]

    FcSystem32W.dll是一个Forcal系统扩展动态库,主要包含一些增强Forcal系统功能的函数和与操作系统有关的函数。

    在FcSystem中的函数是通过二级函数命名空间“sys”输出的,所有函数均具有类似“sys::call(...)”的格式。使用!using("sys");可简化FcSystem中的函数访问。

    FcSystem32W.dll需要FcData32W.dll的支持,FcData32W.dll要先于FcSystem32W.dll加载。

2 Forcal系统函数 [返回页首]

[返回页首][整数函数] sys::comfor(pFcFor,"f(x,y)=x+y",ForType,hModule,&ErrBegin,&ErrEnd):将Forcal静态字符串编译为表达式

    pFcFor:保存Forcal表达式(函数)句柄的FcData数据指针。由pFcFor=new[sys::fcfor]申请,不用时用delete[pFcFor]销毁。每次编译前,将销毁pFcFor中原先保存的表达式。
    "f(x,y)=x+y":Forcal表达式(函数)。必须提供一个函数名,否则无法访问。
   
ForType:表达式的类型。ForType=1表示整数表达式,ForType=2表示实数表达式,ForType=3表示复数表达式。
    hModule:表达式所在模块。如果hModule是一个正数,编译为全局表达式,否则编译为私有表达式。
    ErrBegin,ErrEnd:编译出错时返回出错位置。
    返回值:错误代码。返回0表示没有错误。
    说明:如果表达式编译成功,可以直接调用该表达式。如果要将表达式传给一个函数,需要用HFor(...)函数获得该表达式的句柄。

    运行错误:1:指针pFcFor非法;2:非法的Forcal静态字符串地址;3:非法的表达式类型。

    [例子] 该例子需要FcData32W.dll的支持。

!using("sys");                    //使用命名空间sys
i: !(::pf)= pf=new[fcfor],comfor(pf,"f(x)=x+1",2,100,0,0);
    //申请保存Forcal表达式句柄的FcData数据指针,然后将Forcal静态字符串编译为全局的实数表达式
f[5];
                             //直接调用函数f
(:y)= call[2,HFor("f"):5:&y],y;
   //动态调用函数f
i: (::pf)= delete[pf];
            //销毁pf及表达式

[返回页首][整数函数] sys::comfors(pFcFor,pStr,ForType,hModule,&ErrBegin,&ErrEnd):将FcData字符串编译为表达式

    pFcFor:保存Forcal表达式(函数)句柄的FcData数据指针。由pFcFor=new[sys::fcfor]申请,不用时用delete[pFcFor]销毁。每次编译前,将销毁pFcFor中原先保存的表达式。
    pStr:FcData字符串指针,包含Forcal表达式(函数)。必须提供一个函数名,否则无法访问。
   
ForType:表达式的类型。ForType=1表示整数表达式,ForType=2表示实数表达式,ForType=3表示复数表达式。
    hModule:表达式所在模块。如果hModule是一个正数,编译为全局表达式,否则编译为私有表达式。
    ErrBegin,ErrEnd:编译出错时返回出错位置。
    返回值:错误代码。返回0表示没有错误。
    说明:如果表达式编译成功,可以直接调用该表达式。如果要将表达式传给一个函数,需要用HFor(...)函数获得该表达式的句柄。

    运行错误:1:指针pFcFor或者pStr非法;2:非法的表达式类型。

[返回页首][整数函数] sys::testfcfor(pFcFor):测试fcfor是否有效

    pFcFor:保存Forcal表达式(函数)句柄的FcData数据指针。由pFcFor=new[sys::fcfor]申请,不用时用delete[pFcFor]销毁。
    返回值:如果pFcFor包含有效的表达式,返回表达式句柄(该句柄与用HFor(...)函数获得的表达式句柄完全相同),否则返回NULL。如果pFcFor非法,也返回NULL。

[返回页首][整数函数、实数函数] sys::call(ForType,ForHandle : x0,x1,x2,... : &r0,...):动态调用表达式

    ForType,ForHandle:表达式的类型及句柄。ForType=1表示整数表达式,ForType=2表示实数表达式,ForType=3表示复数表达式。
   
x0,x1,x2,...:表达式参数。调用整数或实数表达式时,参数个数与表达式参数个数相同;调用复数表达式时,参数个数为表达式参数个数的2倍。
   
&r0,...:表达式的返回值。ForType=1或ForType=2时只有&r0;ForType=3时为&r0,&r1。必须使用引用参数。
    说明:表达式调用成功时返回1,否则返回0。

    运行错误:1:至少需要3个参数;2:非法的表达式类型;3:调用整数表达式时参数不匹配;4:调用实数表达式时参数不匹配;5:调用复数表达式时参数不匹配;6:非法的表达式句柄。

    [例子] 该例子需要FcData32W.dll的支持。

!using("sys");
i:a(x)= x=x+1;
b(x)= x=x+1;
c:c(x)= x=x+1+i;
i:(:y)= call[1,HFor("a",1):11:&y],y;
(:y)= call[1,HFor("a",1):rtoi(11):&y],itor(y);
i:(:a,b,s)= s=new[string,80,EndType:"22"],StrToFCD[s,real:&a],call[2,HFor("b",2):a:&b],FCDToStr[real:b:s],printff["\r\n结果:{1,s}\r\n",s];
i:(:a,b,c,d,s)=
{
    s=new[string,80,EndType:"2-2i"],           
//申请一个字符串,存放一个复数
    StrToFCD[s,complex:&a,&b],                 
//将复数转换并保存到a,b
    call[3,HFor("c",3):a,b:&c,&d],             
//调用复数表达式c,返回值保存到c,d
    FCDToStr[complex:c,d:s],                   
//将复数c,d转换为字符串并保存到s
    printff["\r\n结果:{1,s}\r\n",s]            
//输出字符串s
};

[返回页首][整数函数、实数函数] sys::(... ...):

 

3 操作系统函数 [返回页首]

[返回页首][整数函数、实数函数] sys::clock(): 获取流逝过去的时钟脉冲数。

[返回页首][整数函数] sys::ShellExecute(hwnd,"lpOperation","lpFile","lpParameters","lpDirectory",nShowCmd):执行外部程序函数

hwnd:窗口句柄,一般为null(0);
lpOperation:指定本命令所要执行的动作;
lpFile:指定本命令所要操作的文件;
lpParameters:指定操作文件时所使用的参数;
lpDirectory:指定本命令所使用的缺省路径;
nShowCmd:显示方式。

运行错误:1:指定的字符串不存在。

例子:该例子需要FcData32W.dll的支持。

打开一个应用程序:i: sys::ShellExecute(null(0),"open","calc.exe","","",0);
打开一个网页:i: sys::ShellExecute(null(0),"open","http://blog.csdn.net/forcal","","",0);
用系统打印机打印文档:i: sys::ShellExecute(null(0),"print","openfc.ini","","",0);
查找文件:i: sys::ShellExecute(null(0),"find","","","",0);


版权所有© Forcal数学软件 2002-2009,保留所有权利
E-mail: forcal@sina.com
  QQ:630715621
最近更新: 2009年09月27日