转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
表达式编译计算器(下)         ★★★★

表达式编译计算器(下)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:647 更新时间:2009/4/23 18:58:37
表达式编译计算器(下)

Ken J  VB 加油站

概述

本篇是讲如何实现一些更强大的功能, 可自己定义的宏及增加数据类型检查功能和错误处理。

自定义宏

根据我们的语法定义, 替换宏是包含在字符 ` (左上与~一起)中的数字, 比如一个合法的宏写法是 `12` , 我们可能让该宏代表一个数组的索引或者是数据库中的某个字段的索引, 或是其他什么, 由于有非常多的可能性, 我把宏的处理用事件来处理。

Public Event GetGrid(No, Ret) ''''宏的事件, No 为宏的编号, Ret为返回值

'''' 读入一个宏
Private Function ReadField(Str1 As String)
Dim C1 As String
Dim rets As String
C1 = ReadNumber(Str1) ''''读入宏的编号
If C1 <> "" Then
RaiseEvent GetGrid(C1, rets) ''''发生宏计算事件
ReadField = rets
End If
C1 = ReadChar(Str1)
Do While C1 <> "" And C1 = " "
C1 = ReadChar(Str1)
Loop
If C1 <> "`" Then
ErrorStr = "需要 `"
End If
End Function

由上面的代码看到, 对于宏的计算不是在类内部完成的, 而是利用事件, 把该具体计算交给了程序来处理。一个可能的宏处理过程可能如下:

'''' 自己定义的宏函数
'''' 该宏简单地把所有的宏编号*2 返回
Private Sub Syscomp2_GetGrid(No As Variant, Ret As Variant)
Ret = CStr(Val(No) * 2)
End Sub

如果使用该宏计算, `2` 的值就是4。您明白了吗?

使用类

调用该类非常简单:

Private Sub Command1_Click()
Dim Comp1 As New CompStr
MsgBox Comp2.GetExp(Text1) ''''计算Text 的值
Set Comp1 = Nothing
End Sub

如果是使用宏的情况:

Dim WithEvents Syscomp1 As CompStr

Private Sub Syscomp1_GetGrid(No As Variant, Ret As Variant)
Ret = CStr(Val(No) * 2) ''''或其他可能的处理
End Sub

Private Sub Command1_Click()
Dim Comp1 As New CompStr
Set Syscomp1 = Comp1
Comp1.ErrorStr = ""
MsgBox Comp1.GetExp(Text1)
Set Syscomp1 = Nothing
Set Comp1 = Nothing
End Sub

数据类型和错误处理

在该类里没有实现的是数据类型检查和错误处理, 因为我的程序中不需要这些功能, 所以没有增加上。

数据类型是使用一个变量 CurType 来实现的, 每次的求值后, 设置 CurType , 可以控制值的类型。 目前, 该类对 "123" + 333 的计算是不会出错的, 而是得到结果 456 ,增加数据类型检查可以要求有严格的表达式书写。

属性 ErrorStr 来表示最后出现的表达式编译错误。 但是目前在类中没有错误处理。


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台