CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
【经验总结】不能实施并行处理的情况 浅谈并行编程中的任务分解模式
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  PowerBuilder >  基础类

用户自定义算术表达式的求解

楼主pingming(平民)2002-03-08 21:40:57 在 PowerBuilder / 基础类 提问

很时候,需要用户自定义报表。  
  里面的数值计算,用户要自己定义。  
  常见问题:  
  有变量a[1   to   20]  
  用户可以自由设定  
  如:   ((a[1]+a[2])/a[3])-a[4]  
  复杂一点可以输入常用数学函数。  
  还有如a1单元格加b5单元格之类的。  
   
  我的实现方法。  
  写一个算术表达式的分析程序。  
  先将其转化为后缀表达式,再求解。  
  数据结构的书里有。  
  没有百十行语句,难以实现。  
  如果有函数,那就更费经了。  
   
  怎么办,有没有更简单的办法?  
  我不信,PB有这么笨,要程序员从头自己写一个分析程序。 问题点数:20、回复次数:5Top

1 楼flyerlxg(飞鸟)回复于 2002-03-08 21:49:05 得分 0

你用的PB版本是多少?Top

2 楼pingming(平民)回复于 2002-03-08 22:13:48 得分 0

pb8.0Top

3 楼killerdanny(堕落的瓦拉斯塔兹)回复于 2002-03-09 01:31:30 得分 0

hehe!UP.在另外帖子回答了!建议用DW自己方法!Top

4 楼llitcwl(中国龙)回复于 2002-03-09 09:29:31 得分 15

最简单的方法:  
  dw_1.describe(   "Evaluate('你的表达式   ',   1)")  
  和DW中做计算列表达式一样  
  eg:  
  dw_1.describe(   "Evaluate('(a[1]+a[2])/a[3])-a[4]   ',   1)")  
  Top

5 楼K999(学习)回复于 2002-03-09 09:41:56 得分 5

转帖:  
   
  那么,我们现在来学习一下怎样得到数据窗口内的计算域的计算内容.pb没有现成的可以提取计算域计算值的描述方法,只能取得计算域的描述内容。那我们可不可以,让程序在datawindow中运行这个表达式来获得结果呢?答案是可以!  
    我再介绍一个函数,它可以调用pb内的datawindow的内嵌函数及各种表达式:Evaluate().它的函数格式如下:  
   
  Evaluate("expression",row)  
  expression---要执行的内嵌函数表达式,要用引号引上。  
  row   --执行表达式的数据窗口内的数据行    
  例如,要在第一行数据上运行if(salary>100,1,0)的表达式,代码如下:  
  ls_ret   =   dw_1.Describe(   &   "Evaluate('If(salary   >   100,   1,   0)',   1)")    
   
    假定我们要取得的计算域名称为cfd_sum,我们首先利用Describe()函数获得cfd_sum的表达式expression,然后我们利用Evaluate()函数,在数据窗口内计算该表达式,这样我们就可以间接的获得计算域的计算内容了!下面的程序脚本将说明具体的取值方法  
   
  //------------------------------------------  
  //---获得pb数据窗口内的计算域的内容  
  //---   Scripe   made   by   范泽亮   2000.8.6  
  //------------------------------------------    
   
  string   c_express   //保存计算域表达式  
  string   c_var     //保存计算域的计算结果  
  //-----------设置事物对象、检索数据窗口----//    
   
  dw_1.settransobject(sqlca)    
  dw_1.retrieve()  
  //----------------获得计算域cfd_sum的表达式    
   
  c_express=dw_1.describe("cfd_sum.expression")  
   
  //----------------取得对应计算域表达式的结果  
   
  c_var=dw_1.describe("Evaluate('"+c_express+"',2)")    
   
  //---------------显示表达式的结果  
  st_show.text=c_var  
   
    到此为止,我简单的给大家介绍了一个获得datawindow中的计算域的方法。大家也可以融会贯通,运用此方法获得不能直接获取的datawindow内部的函数或者表达式内容.  
   
  Top

相关问题

  • 正则表达式求解!
  • 算术表达式的正则表达式
  • 正则表达式操作 求解~
  • 正则表达式疑惑求解
  • 求vb.net算术表达式求值!
  • 如何在PB中对自定义的表达式进行计算
  • 为DataColumn.Expression属性添加的表达式中自定义处理函数
  • 奇怪的问题:已经有正则表达式,求解
  • 求助,求解任意表达式的函数(要用C)?
  • winCE中如何使用正则表达式 ?? 高分求解!

关键词

  • 函数
  • 数据
  • 用户
  • pb
  • 内容
  • 表达式
  • 计算域
  • evaluate
  • datawindow
  • dw

得分解答快速导航

  • 帖主:pingming
  • llitcwl
  • K999

相关链接

  • PowerBuilder类图书
  • PowerBuilder类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
惹火投票。。火热进行中...
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
CSDN网站24小时值班电话:13552009689
Copyright © 2000-2009, CSDN.NET, All Rights Reserved
GongshangLogo