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日
- C/C++接收Lu系统的字符串信息
- C/C++使用MLu简化Lu脚本系统的使用
- C/C++使用Lu脚本字符串
- [C语言]矩阵的LU分解
- C/C++调用Lu的入门程序
- LU分解不分块的C程序
- Lu分解法的C语言实现
- C/C++使用Lu脚本字符串键树
- C/C++注册常量或函数到Lu系统
- C/C++使用Lu脚本中的动态对象lu
- 自己c写的信息记录系统
- 使用java建立基于socket的c/s接收系统
- C语言url接收一个json字符串
- 获取linux系统的cup信息,内存信息c代码
- C/C++注册动态对象到Lu系统并进行运算符重载
- C/C++对Lu系统内置动态对象进行运算符重载
- Lu与C/C++、Forcal、MATLAB、Python、Lua等各种语言的速度比较
- 在C/C++中使用Lu脚本
- 如何进行软件需求分析
- cookie和session
- MySQL安装图解
- Js中的window.parent ,window.top,window.self 详解
- 多核编程文章汇总
- C/C++接收Lu系统的字符串信息
- js data 日期初始化
- 修改tomcat项目的浏览器标签图标
- 系统分析之一 概述
- Eclipse开发中,全局编码设置为UTF-8
- session的两种实现方式
- rubymine在ubutu的桌面入口
- 正则表达式——献给2013的葬礼
- 普通大学生的2013回望总结