资源简介
新版本
修正了上一版本的某些bug,减少了全局变量的使用,
并增加对变量引用的判断,以在格式化公式组时确定变量的引用情况,确定是否释放公式组中的变量,对内存中公式删除时不会再产生野指针
本组建主要用于在程序中解析预先编写的类C脚本,并依据脚本执行,可通过调用外部指针函数读入输入变量执行计算,最终得出计算结果写入输出变量中;用户可通过读取输出变量获取最终的结果。
脚本中可调用函数,函数分为系统函数和自定义函数两种;系统函数可直接调用;自定义函数需在脚本中自行定义

代码片段和文件信息
#include
#include “ext_code_struct.h“
/** if */
CVarStruct * CCodeStruct_IF::proc_code_stuct(bool& bReturnFlag) {
CParamList *pParamList = this->pCParamList;
CVarStruct *pVarStruct = pParamList->get_param()->deal_param();
if ((long) atof(pVarStruct->get_value())) {
pParamList->pNext->get_param()->deal_param();
} else {
CParamList *p = pParamList->pNext->pNext;
while (NULL != p) {
if (NULL != p->pNext) {/* 存在 else if 子句 */
CVarStruct *pVar = p->get_param()->deal_param();
if ((long) atof(pVar->get_value())) {
p->pNext->get_param()->deal_param();
break;
} else if (p->pNext->pNext) {
p = p->pNext->pNext;
}
} else {
p->get_param()->deal_param();
break;
}
}
}
return NULL;
}
/** while */
CVarStruct * CCodeStruct_WHILE::proc_code_stuct(bool& bReturnFlag) {
CParamList *pParamList = this->pCParamList;
while ((long) atof(pParamList->get_param()->deal_param()->get_value()) != 0) {
pParamList->pNext->get_param()->deal_param();
}
return NULL;
}
/** user_def_function */
CVarStruct * CCodeStruct_UFunc::proc_code_stuct(bool& bReturnFlag) {
*pResValue = *(pCUseFunc->process(this));
return this->pResValue;
}
/** 附值语句 */
CVarStruct * CCodeStruct_Asign::proc_code_stuct(bool& bReturnFlag) {
CVarStruct *pVarStruct = this->pCParamList->get_param()->deal_param();
this->pResValue->copy(*pVarStruct);
return this->pResValue;
}
/* 数值计算的codestruct类 */
CVarStruct * CCodeStruct_Cal::proc_code_stuct(bool& bReturnFlag) {
CVarStruct *pPara1 = pCParamList->get_param()->deal_param();
CVarStruct *pPara2 = pCParamList->pNext->get_param()->deal_param();
char *str1 *str2;
double f_num1 f_num2;
if (StringK == pPara1->get_var_kind())
str1 = pPara1->get_value();
else
f_num1 = atof(pPara1->get_value());
if (StringK == pPara2->get_var_kind())
str2 = pPara2->get_value();
else
f_num2 = atof(pPara2->get_value());
switch (this->op) {
case PLUS:
if ((StringK == pPara1->get_var_kind() && StringK == pPara2->get_var_kind())) {//字符串相加
if (NULL != pResValue->get_value())
delete pResValue->get_value();
char * sStr = new char[strlen(str1) + strlen(str2) + 1];
sprintf(sStr “%s%s“ str1 str2);
pResValue->set_value(sStr);
} else if ((StringK == pPara1->get_var_kind() && FloatK == pPara2->get_var_kind())) {
pResValue->set_value(str1 + (int) ceil(f_num2));
} else if ((StringK == pPara2->get_var_kind() && FloatK == pPara1->get_var_kind())) {
pResValue->set_value(str2 + (int) ceil(f_num1));
} else {
pResValue->set_value(f_num1 + f_num2);
}
break;
case MINUS:
pResValue->set_value(f_num1 - f_num2);
break;
case MULTIPLY:
pResValue->set_value(f_num1 * f_num2);
break;
case DIVIDE:
if (fabs(f_num2) < 0.000001)
exit(1);
else
pResValue->set_value(f_num1 / f_num2);
break;
}
return pResValue;
}
/* 比较计算的codestruct类 */
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 870 2008-12-17 17:47 formula c++\Debug\my.cfg
文件 870 2008-12-17 17:47 formula c++\formula\Debug\my.cfg
文件 5778 2008-12-24 14:25 formula c++\formula\ext_code_struct.cpp
文件 2772 2008-10-23 12:13 formula c++\formula\ext_code_struct.h
文件 2948 2008-12-22 15:37 formula c++\formula\factory_code_struct.h
文件 3773 2008-12-24 14:27 formula c++\formula\formula.cpp
文件 2806 2008-12-23 17:44 formula c++\formula\formula.h
文件 1111 2008-12-24 14:26 formula c++\formula\formula_group.cpp
文件 532 2008-12-24 14:25 formula c++\formula\formula_group.h
文件 9794 2008-12-24 14:38 formula c++\formula\formula_public.h
文件 1137 2008-12-23 10:44 formula c++\formula\main.cpp
文件 21238 2008-12-23 17:47 formula c++\formula\parse.cpp
文件 3182 2008-12-22 09:26 formula c++\formula\parse.h
文件 272 2008-06-24 11:29 formula c++\formula\singleton.h
文件 6490 2008-12-24 14:39 formula c++\formula\sys_func_code_struct.h
文件 2884 2008-12-18 11:42 formula c++\formula\user_func.h
文件 4184 2008-08-19 11:09 formula c++\formula\util.cpp
文件 490 2008-08-19 11:09 formula c++\formula\util.h
目录 0 2009-01-12 18:24 formula c++\formula\Debug
目录 0 2009-01-12 18:24 formula c++\Debug
目录 0 2009-01-12 18:24 formula c++\formula
目录 0 2009-01-12 18:24 formula c++
----------- --------- ---------- ----- ----
71131 22
- 上一篇:五子棋小游戏含注释
- 下一篇:C++ QT SMTP 发送邮件(最新,成功的)
相关资源
- VC++实现CMD命令执行与获得返回信息
- 基于LPC2132的蛇形机器人前端执行机构
- 软件工程选课系统含代码,执行文件
- MFC bluetooth
- c++围棋可执行文件
- 一个控制台俄罗斯方块C++源代码及可
- C语言实现了crontab表达式执行时间
- 计算机图形学基于opengl图形变换源代
- 魔方还原源码及可执行程序
- 操作系统课设源代码 模拟进程的并
- duilib中WebBrowser C++与js相互调用
- VC++车牌识别系统源码带可执行程序
- zw_vc6.0可执行源码.zip
- 弹性波全波形反演代码和可执行程序
- Qt/C++模仿酷狗音乐播放器执行文件
- c++ 执行脚本的程序(一键安装全部卸
- C++ 在程序中执行SQL Server脚本
- VC6.0直接可执行源码(音乐播放器,记
- MFC计算器包含可执行文件
- c/c++经典1000例100+900例 包括详细题目、
- 用C++实现简单的扫雷游戏,内含源代
- dll释放可执行程序。
- 判断一个文件是否是合法的PE文件
- C++调用其它exe执行文件.
- VC++ 实现增大可执行文件的体积 自
- C++实现文件复制视频,图像,文本,
- 可用“破圈法”求解带权连通无向图
- 进程管理 执行 唤醒 阻塞 结束
- 最小二乘法曲线拟合C语言可执行代码
- 如何在keil中查看程序执行时间
评论
共有 条评论