C/C++接收Lu系统的字符串信息

来源:互联网 发布:ubuntu切换中文 编辑:程序博客网 时间:2024/05/16 10:55

欢迎访问Lu程序设计

C/C++接收Lu系统的字符串信息

1 说明

    要演示本文的例子,你必须下载Lu32脚本系统。本文的例子需要lu32.dll、lu32.lib、C格式的头文件lu32.h,相信你会找到并正确使用这几个文件。

    用C/C++编译器创建一个控制台应用程序,复制本文的例子代码直接编译运行即可。

2 关于Lu系统的字符串信息

    Lu核心库的函数o以及许多注册到Lu的二级函数都将返回一些字符串信息,若要接收这些信息,需要注册一个luMessage类型的函数到Lu(用luPubKey_User类型的4字节串"\0\0\0\0"键标识),参考Lu编程指南

void _stdcall LuMessage(wchar_t *pWStr) //输出Lu信息,该函数注册到Lu,由Lu及二级函数调用
{
    ... ...
}

    标识符luPubKey_User表示Lu键树中的公有键数据类型,公有键就是大家都可以访问的键,里面存的数据谁都可以访问,LuMessage函数是谁都可以用的,当然要注册为公有键了。有公有键当然就有私有键,私有键只能自己访问,以后会详细进行讨论,这里就不多说了。

    要使用InsertKey函数将LuMessage注册到Lu系统,格式如下:

void *v;... ...InsertKey("\0\0\0\0",4,luPubKey_User,LuMessage,NULL,NULL,1,v); //使Lu运行时可输出函数信息

    为了方便由32位系统升级到64位系统,最好使用下面的代码:

void *v;luVOID k=0;  //32位平台上luVOID被定义为__int32;64位平台上luVOID被定义为__int64;k必须赋值为0... ...InsertKey((char *)&k,sizeof(luVOID),luPubKey_User,LuMessage,NULL,NULL,1,v); //使Lu运行时可输出函数信息

3 代码

#include <stdio.h>#include <locale.h>#include "lu32.h"#pragma comment( lib, "lu32.lib" )void _stdcall LuMessage(wchar_t *pch) //输出动态库信息,该函数注册到Lu,由Lu二级函数调用{wprintf(L"%s",pch);}void main(void){void *hFor;//表达式句柄luINT nPara;//存放表达式的自变量个数LuData *pPara;//存放输入自变量的数组指针luINT ErrBegin,ErrEnd;//表达式编译出错的初始位置和结束位置int ErrCode;//错误代码void *v=NULL;//为了避免编译器报错,初始化为NULLluVOID k=0;//32位平台上luVOID被定义为__int32;64位平台上luVOID被定义为__int64;k必须赋值为0wchar_t ForStr[]=L"o{\"o函数返回的信息:\",22,\" \",22.,\" \",2-3i,\" \",1$2$3,\" \",2>3}";//字符串表达式if(!InitLu()) return;//初始化LuInsertKey((char *)&k,sizeof(luVOID),luPubKey_User,LuMessage,NULL,NULL,1,v);//使Lu运行时可输出函数信息setlocale(LC_ALL, "chs");//设置可以输出中文ErrCode=LuCom(ForStr,0,0,0,&hFor,&nPara,&pPara,&ErrBegin,&ErrEnd);//编译表达式if(ErrCode){printf("表达式有错误!错误代码: %d \n",ErrCode);}else{LuCal(hFor,pPara);//计算表达式的值}FreeLu();//释放Lu}

运行结果:

o函数返回的信息:22 22. {(2.)$(-3.)} {(1.)$(2.)$(3.)} false

4函数说明

    本例用到了Lu的5个输出函数:初始化Lu的函数InitLu,释放Lu的函数FreeLu,编译表达式的函数LuCom、计算表达式的函数LuCal、插入键值函数InsertKey。从这里查看这些函数的说明:Lu编程指南

5 难点分析

    本例中函数InsertKey的用法是最复杂的,不过本例的用法比较简单。需要注意倒数第二个参数要设成非0值,否则有可能设置不成功。

    字符串表达式中的o函数是这样的:o{"o函数返回的信息:",22," ",22.," ",2-3i," ",1$2$3," ",2>3}

    o函数用于输出对象(object)的信息,本例输出了一些字符串和数据,其中22是整数;22.是实数;2-3i是复数;1$2$3是三维向量;2>3是逻辑值。o函数在输出复数和三维向量时,格式为{(2.)$(-3.)}和{(1.)$(2.)$(3.)},这是种Lu脚本可以直接进行编译的格式。

    如果将自己设计的对象注册到了Lu系统(仍然使用函数InsertKey),我们可以通过重载函数o来输出我们自己的对象信息,后续教程中就会讲到这方面的例子。

6 其他

    你可能注意到了,我的联系方式就在下面,如有不明之处或有什么建议,可随时与我进行联系。


版权所有© Lu程序设计 2002-2013,保留所有权利
E-mail: forcal@sina.com
  QQ:630715621
最近更新: 2013年12月28日

0 0
原创粉丝点击