hur.cn - 华软网

 热门搜索

使用MFC ,怎样调用文本文件中的函数或公式

  作者:未知    来源:网络    更新时间:2011/9/21
切入正题
  在下使用MFC编写一个程序,过程中,需要两个文本文件,第一个是Data.txt,用于储存数据,第二个是Formulas.txt,用于储存公式,目前已经将Data.txt中的数据格式化到MFC中定义的结构体成员中大概数据如下
...... 语文 数学 英语 地理 ......
        90   99   80   96   
        85   83   88   92 
        92   81   77   95
类似于这样的一组数据,定义的结构体数组为 
struct Student
{
int yuwen;
int shuxue;
int yingyu;
int dili;
}stu[4];
  已经将文本文件Data.txt中的数据格式化到结构体中,也就是说当前stu[0].yuwen的值是90,stu[1].yuwen的值是85
  原本想使用公式得到数据的和,例如int add=stu[0].yuwen+stu[0].shuxue;这个公式很容易实现,也很容易得到结果,但问题是,使用软件过程中不单单用到这一个公式,而且用到的公式很可能要根据实际情况修改(或增加、删除),为了便于软件完成后可以随时更改公式,于是就建立一个文本文件“Formulas.txt”用来储存这些公式,问题出现了,下面是我遇到的问题

请教:
假如在“Formulas.txt”中储存的公式格式类似如下→↓
add1=std[0].yuwen+std[0].shuxue
add2=std[0].shuxue+std[0].yingyu+std.dili
add3=std[1].yingyu+std[1].dili
......
  有没有什么办法在MFC中直接调用这些公式,像在Debug状态下调用源文件中的公式一样;而且要满足下面的要求:程序发行以后,公式文件“Formulas.txt”中的公式可以直接使用记事本更改,使程序可以按照更改后的公式进行计算

赐教
   拜谢



        
---华软 网友回答---
可以研究一下脚本
---华软网友回复---
引用 1 楼 mayudong1 的回复:
可以研究一下脚本

我刚入门,脚本不太懂,有没有C语言代码或者思路,给一个
---华软网友回复---
关注中
---华软网友回复---
看其他帖子时受到点启发,能不能用函数指针解决,在这备份一下这个思路
---华软网友回复---
程序中定义操作符:
+ - × % 其他。
程序中定义操作数:
如果操作数可以用简单的内置类型如int,uint表示,可以直接使用,如果不是,定义自己的类类型,并且重载上面定义的操作符。

读取文本:
第一个一定要为操作数(这个你自己检查),然后操作符,根据操作符的行为来计算这次结果,这次的结果将作为下次的左操作数,然后再读后面的操作数和操作符。依次循环直至最后一个。
---华软网友回复---
一些脚本类程序如Perl和PHP等可以把一个字符串作为表达式运行。但是MFC有些难办,需要自己去解析这些表达式,可以在网上找找看有没有现成的库。
---华软网友回复---
引用 5 楼 huangxiansheng1980 的回复:
程序中定义操作符:
+ - × % 其他。
程序中定义操作数:
如果操作数可以用简单的内置类型如int,uint表示,可以直接使用,如果不是,定义自己的类类型,并且重载上面定义的操作符。

读取文本:
第一个一定要为操作数(这个你自己检查),然后操作符,根据操作符的行为来计算这次结果,这次的结果将作为下次的左操作数,然后再读后面的操作数和操作符。依次循环直至最后一个。

类似的概念了解甚少,先去研究一下,谢过 
---华软网友回复---
请不要在公式中关联变量,这样就是一个最简单的文本解析。
---华软网友回复---
引用 8 楼 xuddk727 的回复:
请不要在公式中关联变量,这样就是一个最简单的文本解析。

有了一点点思路
---华软网友回复---
引用 8 楼 xuddk727 的回复:
请不要在公式中关联变量,这样就是一个最简单的文本解析。

能不能给段代码

---华软网友回复---
尚未搞定
等待高人
---华软网友回复---
代码做什么,我举个简单例子
a=(3+4-5)*2;
你完全可以写成一个过程
比如文本这么写
[Start]
+ 3
+ 4
- 5
* 2
[End]
这样解析够方便了把?

---华软网友回复---
我在百度知道提问了同样的问题,其中一个热心回答中讲到“词法语法分析器”的思路,在此贴出链接,以供遇到类似问题的朋友做参考,另外,感谢“xuddk727”等朋友的支持
http://zhidao.baidu.com/question/321772184.html      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。