????使用MFC ,怎样调用文本文件中的函数或公式??? 用的是C语言,最好能给段代码
切入正题在下使用MFC编写一个程序,过程中,需要两个文本文件,第一个是Data.txt,用于储存数据,第二个是Formulas.txt,用于储存公式,目前已经将Data....
切入正题
在下使用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”中的公式可以直接使用记事本更改,使程序可以按照更改后的公式进行计算
赐教
拜谢 展开
在下使用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”中的公式可以直接使用记事本更改,使程序可以按照更改后的公式进行计算
赐教
拜谢 展开
展开全部
//定义并设置画笔粗细
CPen bLine;
bLine.CreatePen(PS_INSIDEFRAME|PS_SOLID,2,RGB(0,0,0));
//创建DC
CPaintDC dc(this);
dc.SelectObject(bLine);
//划线
dc.MoveTo(5,20);//划线起点
dc.LineTo(395,20);//划线终点
//销毁画笔,Create创建的对象都要调用DeleteObject()
bLine.DeleteObject()
CPen bLine;
bLine.CreatePen(PS_INSIDEFRAME|PS_SOLID,2,RGB(0,0,0));
//创建DC
CPaintDC dc(this);
dc.SelectObject(bLine);
//划线
dc.MoveTo(5,20);//划线起点
dc.LineTo(395,20);//划线终点
//销毁画笔,Create创建的对象都要调用DeleteObject()
bLine.DeleteObject()
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以创建一个简易的词法语法分析器,用以分析Formulas.txt中的公式,然后将其转化为实际代码执行
更多追问追答
追问
这是一个思路,不过我刚入门,对此了解甚少,有另一个思路,你帮忙看能不能实现:
环境:VC++6.0;
思路:程序界面仅有一个”运行“按钮,在”TestDlg.cpp“文件中完成该按钮的代码。代码的其中一个步骤是:用代码将Formulas.txt中的公式读入到剪切板,这个已经做到,问题是接下来用什么代码可以将剪切板中的内容粘贴到当前TestDlg.cpp中,最好是可以在代码中指定粘贴的具体位置,比方粘贴到一个for循环中(即便成功可以用吗)
追答
一旦你的程序运行起来,它必然已经经过了编译和链接,此时.cpp文件和你的程序是无关联的。
也就是说程序运行起来后,无论你怎么修改TestDlg.cpp,都影响不到程序的执行
所以你的这个思路是不可以实现的。
就你的这个问题,我只想到两个方法:
方法1、把Formulas.txt设置为.cpp文件,并将其加入到你的工程中
文件中的公式都写成函数形式
但是有几个缺点:
每次运行程序都需要重新编译链接,如果是做产品的话是很致命的;
函数的个数和命名,格式都是限定死的,只能修改函数内容,耦合限定太死,不方便你的公式编辑需求(也可以用函数指针数组,但是感觉也很麻烦)
方法2就是我最先提出的,写一个简易的词法语法分析器,在运行时可以分析Formulas.txt中的文本公式,然后执行。就你给出的公式例子来说,文法并不太复杂,分析器也比较好实现
用这个方法可以使你的Formulas.txt文件和程序耦合的送一些(只需要文件名的联系),不需要每次重新编译,公式的个数也不会有限制,公式的形式限制也比较宽松。
所以我还是推荐你用这个方法
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
直接使用是不可能的,一定要做的话要用算法模拟,就是自己分析文本内容
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1234552211111111111111111111111111111111111111111
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询