分享
 
 
 

中国人自己的开发语言HB++<语句介绍>

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

这些是基本的开发语言语句,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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有