荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Second (石开), 信区: Program
标  题: [转载]中国人自己的开发语言HB++<语句介绍>     ]
发信站: 荔园晨风BBS站 (Wed Jun 27 07:42:59 2001), 转信

这些是基本的开发语言语句,HB++对面向对象作了不少支持工作,在这方面,比VB.NET最
新版的面向对象支持方面更加出色.这里将分段介绍HB++,供同行业朋友指正和帮助
3.2 语句
1. 顺序语句
a) 赋值语句
    Let基本类型赋值语句
    [Let] 变量名 | 类成员变量名 = 表达式
    Set非基本类型赋值语句
    Set 变量名 | 类成员变量名 = 表达式
    Set 变量名 | 类成员变量名 = New 非基本类型名[(构造时的参数表)]
b) 调用函数
    Call调用函数语句
    [Call] 函数名 | 类成员函数名(参数表)
    即使函数有返回值,使用Call语句后,返回值将自动丢失。如果返回的是类实例,
HB++将自动释放类实例空间。
2. 条件语句
  a)If语句
    If语句标准格式:
        If 逻辑表达式 Then
        [Else If 逻辑表达式 Then]
        [Else]
        End If
    b)Select语句
      Select语句标准格式:
        Select 算术表达式
        Case 逻辑表达式
        [Case Else]
        End Select
      注意:此处的逻辑表达式的第一个逻辑运算符不需要左边的算式。例如:
        Dim a As Long
        a=10
        Select a+3
        Case <2
        Case >2 And a+3<10
        Case >10 And a+3<100
        CaseElse
        End Select
3. 循环语句
a)For循环语句
    标准格式:
     For 循环变量 = 初始值 To 终止值 [Step 步长值]
        Next 循环变量
    循环变量只能是单独的变量,不能是类的成员属性或函数。步长值缺省值等于1。
Next语句的循环变量一定要与For语句中的循环变量相同。
    Exit For语句将跳出循环
b)ForSet集合专用循环语句
    ForSet 集合变量
    NextSet
    集合变量只能是集合类的实例变量。其初始值是集合的第一个元素。此循环将自动
从第一个元素循环道集合的最后一个元素。循环体中直接使用集合变量操作元素内容。

    Exit For语句将跳出循环
c)Do While...Loop当条件为真循环语句
    Do While 逻辑表达式
    Loop
    条件先于循环,当外部进入循环时,条件不成立,循环将跳过。
    Exit Do语句将跳出循环
d)Do Until...Loop当条件为真跳出循环语句
    Do Until 逻辑表达式
    Loop
    条件先于循环,当外部进入循环时,条件成立,循环将跳过。
    Exit Do语句将跳出循环
e)Do...Loop While后判断当条件为真循环语句
    Do
    Loop While 逻辑表达式
    条件后于循环,当外部进入循环时,至少循环一遍,然后判断条件是否成立,如果
成立,循环将跳出。
    Exit Do语句将跳出循环
f)Do...Loop Until后判断当条件为真跳出循环语句
    Do
    Loop Until 逻辑表达式
    条件后于循环,当外部进入循环时,至少循环一遍,然后判断条件是否成立,如果
不成立,循环将跳出。
    Exit Do语句将跳出循环
4. 定义语句
a)Function函数定义语句
    标准格式:
      [Virtual] [Public | Private]Function 函数名([[ByVal | ByRef] 参数名 As
 类型名][,[ByVal | ByRef] [Optional] 参数名 As 类型名[= 常量表达式]]...) As
 类型名
      End Function
    函数名:必选,必须是有效字母:26个大小写英文字母、10个数字、下划线、所有
中文,第一个字母必须是英文字母或中文、下划线;
    参数名:同变量名;
    类型名:基本数据类型、非基本数据类型(对象类)、类模板类型;
    [Virtual]:虚拟函数定义,仅仅只能在类的成员函数中定义;
    [Public | Private]:可选,公有私有说明;
    [ByVal | ByRef]:可选,参数按值或按地址传。缺省是按地址传ByRef;
    [Optional]:可选,表示此参数可以写可以不写,即可选参数。可选参数可以对其
给一个缺省值,方法是在其定义后跟一个等号和常量算式。
    [= 常量表达式]:可选,当前面定义的参数是可选参数时,才能使用缺省值定义。
常量表达式中不能使用变量。
    End Funciton:结束函数定义
b)Class类自定义语句
    标准格式:
      Class 自定义的类型名 [From 已有的对象类型名]
      End Class
    自定义的类型名同变量名的字母组成,自定义类型名不能与已有类型名相同。此类
型将是对象类。
    [From 已有的对象类型名]:From继承语句,说明自定义类型是需要从已有的对象类
型继承过来的。
    类型定义必须放在模块定义的内部
c)Module模块定义语句
    标准格式:
      Module 模块名
      End Module
    模块内部将可以定义以下内容:
      自定义对象类型、全局变量、全局函数、模块内局部变量、模块内局部函数。
    模块内部不能定义窗口类,窗口类是独立与所有定义形式。
    模块定义的内容必须在同一个文件中。
    模块定义的内容缺省是全局的。
d)Form窗口类定义语句
    标准格式:
      Form 窗口类       End Form
    HB++中,Form语句定义的窗口类将在编译后执行前自动创建一个窗口实例,并创建
一个全局的静态变量:窗口类。
    在Form...End Form中定义的所有内容,都将是此窗口的成员属性或方法或事件。
    窗口中插入控件的方法很简单,如下面例子:(由于还没有开发完可视化编程部分
,所以暂可以使用以下方式)
      Form 窗口类
        Public withEvent button as TButton
        public withEvent treeView as TTReeview
        public withEvent edit as TText
        public withEvent coolBar as TCoolBar
       End Form
    上面例子中,窗口中将自动被插入了一个按钮、显示树、编辑框、工具条。当没有
定位,如果想定位,继续写下窗口类的构造函数,在构造函数中将各控件定位。定位方
法可以是赋值给Left、Top、Width、Height或指定Align方式定位。
    窗口只有当程序结束时才会被自动释放,如果希望强制释放删除,将上例的窗口类
置空即可:
          Set 窗口类 = NULL
    其他对象类的强制释放删除同样如此。
e)TypeDef类型别名定义语句
    标准格式:
      TypeDef 已有类型名类型的别名
    已有类型名可以是任何HB++的类型(包括类模板)。
    类型别名的使用方法与类型名相同,虽然它不是一个新的类型,但与它指向的类型
完全相同。
f)Struct结构类型定义语句
    标准格式:
      Struct 结构名 From 已有的类型名
      End Struct
    在HB++中,Struct和Class的定义几乎完全一样,使用时可以当成一种方式使用。
g)Dim变量定义语句
    标准格式:
      Dim 变量名[(数组大小)] As [New] 类型名 [<类型参数表>][,变量名 As [New
] 类型名 [<类型参数表>]...]
    变量名:动态变量名称;
    [(数组大小)]:可选,定义数组;
    类型名:HB++所有类型名;
    [<类型参数表>]:可选,如果类型是类模板,此处的类型参数表将是此类模板所需
的类参数。参数最多可以是十个。
h)Static静态变量定义语句
    标准格式:
      Static 变量名[(数组大小)] As [New] 类型名 [<类型参数表>][,变量名 As [
New]类型名 [<类型参数表>]...]
    变量名:静态变量名称
    其他同Dim定义语句说明。
i)Public公有变量定义语句
    标准格式:
      Public [Static] 变量名[(数组大小)] As [New] 类型名 [<类型参数表>][,变
量名 As [New] 类型名 [<类型参数表>]...]
    变量名:公有变量名称
    使用Static说明变量是公有的静态变量,不使用的缺省是动态标量。
    其他同Dim定义语句说明。
j)Private私有变量定义语句
    标准格式:
      Private [Static] 变量名[(数组大小)] As [New] 类型名 [<类型参数表>][,变
量名 As [New] 类型名 [<类型参数表>]...]
    变量名:私有变量名称
    使用Static说明变量是私有有的静态变量,不使用的缺省是动态标量。
    其他同Dim定义语句说明。
    注意:在变量定义中,如果是对象类型的变量,可以使用New来直接创建类实例,但
New不能在类属性定义中使用。
    如果变量定义中没有使用New,可以在执行程序体中使用New语句来创建对象类。例
如:
           Dim a as TForm
           Set a = New TForm
5. 事件定义语句
a)Event事件定义语句
    标准格式:
      Event 事件函数名([[ByVal | ByRef] 参数名 As 类型名][,[ByVal | ByRef]
[Optional] 参数名 As 类型名[= 常量表达式]]...)
    Event事件定义语句定义了事件函数的函数名和参数形式。
    Event语句必须在类定义中使用。
    当定义类实例的此事件函数时,事件函数名定义格式如下:
        类实例变量名_事件函数名
    例如:
      Module 例子模块
        Class 例子类
          Pulic Event Over(ByVal X as Long,ByVal  Y as Long)
          Public OldX as Long,OldY as Long
          Function  Line(ByVal X as Long,ByVal Y as Long)
            RaiseEvent Over(X,Y)
            窗口类.Line(OldX,OldY,X,Y)
          End Function
          '预先定义事件过程函数的方法:
          '有了预先定义的事件函数,此类的类实例在创建构造后,自动拥有此事件函
数的处理过程。
          Function _Over(ByVal X as Long,ByVal  Y as Long)
            if X>0 And X <100 And Y>0 And Y<150 Then
              Msgbox ("进入此区域有效!")
            end if
          End Function
        End Class
      End Module
      Form 窗口类 From TForm
        Public withEvent b as TButton
        Punlic c as 例子类
        Public withEvent d as 例子类
        function b_Click()
        end Function
        Function c_Over(ByVal X as Long,ByVal  Y as Long)
          if X>100 And X <200 And Y>150 And Y<300 Then
            Msgbox ("不能进入此区域!")
          end if
        End Function
      End Form
b)RaiseEvent激发事件语句
    标准格式:
      RaiseEvent 事件函数名(参数表)
    如Event中讲述的例子。
c)WithEvent定义带事件的对象类实例变量
    WithEvent语句在定义变量中说明使用,它表示定义的变量将在构造时自动获取类实
例,如果是控件类实例,还将插入到窗口类中。
    WithEvent说明的变量必须定义是对象类型,如果是基本数据类型,HB++将报错。
    如Event中讲述的例子。
6. 错误处理语句
a)OnError开启错误处理语句
    标准格式:
      OnError
    OnError表示从此行开始如果有错误,将自动转到DoError处执行。
b)DoError错误处理语句
    标准格式:
      DoError [函数名(参数表)]
    DoError如果后面没有跟函数,当在OnError到DoError之间的代码中出错时,将自动
执行DoError语句后面到CloseError之间的程序代码。
    如果后面使用了函数,当出错,将自动调用此函数。
c)CloseError关闭错误处理语句
    标准格式:
      CloseError
    关闭错误处理。关闭后,执行出错,HB++不会激发DoError处理错误,将系统报错。

d)Resume恢复执行语句
    标准格式:
      Resume [Next | Exit]
    Resume:错误处理完毕后,使用此语句将返回到出错的语句上继续执行
    Resume Next:错误处理完毕后,使用此语句将返回到出错的下一条语句
    Resume Exit:错误处理完毕后,使用此语句将退出当前函数。
    注意:HB++的错误处理机制允许嵌套使用。当出错时,HB++会自动寻找最近的错误
处理的DoError。例如下例:
      Function abc(a as long,b as long)
        dim c as long
        OnError
          a=10
          b=0
          c=a/b
          OnError
            a=5
            c=a/b
          DoError
            Msgbox(a)
            Resume Next
          CloseError
          a=20
          c=a/b
        DoError
          MsgBox(a)
          Resume Next
        ClsoeError
      end function
    运行结果:第一次提示“10”,第二次提示“5”,第三次提示“20”。
7. 属性函数定义
a)Property Get读操作函数定义语句
    标准格式:
      Property Get 属性函数名() As 类型名[<>]
      End Property
b)Property Let基本数据类型写操作函数定义语句
    标准格式:
      Property Let 属性函数名([ByVal | ByRef] 参数名 As 基本数据类型名[<>])
      End Property
c)Property Set对象类型写操作函数定义语句
    标准格式:
      Property Set 属性函数名([ByVal | ByRef] 参数名 As 对象类型名[<>])
      End Property
    注意:Property Get与Property Let配对或Property Get与Property Set配对,当
配对两个同名属性函数名的类型一定要相同
d)只读属性或只写属性
    只读属性:仅仅使用Property Get定义属性读函数。
    只写属性:仅仅使用Property Let或Property Set定义属性写函数。
    例子:
      Module 例子模块
        Class 例子类
          Private FData as Long
          Property Get Data() as Long
            Data=FData
          End Property
          Property Let Data(ByVal Value as Long)
            FData=Value
          End Property
        End Class
        Function Dispaly()
          dim d as New 例子类
          d.Data=10
          Msgbox(d.Data)
        end Function
      End Module

--
                            既然热爱生命
                            那么,
                            一切都在意料之中。

※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.28.190]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店