24小时热门版块排行榜    

查看: 203  |  回复: 4
当前主题已经存档。
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

liangduoqiang

铁虫 (正式写手)

[交流] 过程的十五大看法。

1)function和sub过程都能以任意组合嵌套,但不能以任何形式再“定义嵌套”(比如,不能在sub过程中再定义sub和function过程)。
2)对于function和sub过程,它们的形参可以是任意类型(包括对象)。
3)function过程可以定义为字符型数据(固定长度除外),请问“固定长度”如何界定?
4) function过程可以定义为任何类型,除了枚举类型以外。
5)  对于function和sub过程,当用数组作为过程的参数时,进行的不“值”的传递,而是“址”的传递。情况比较特殊,参数必须都是“数组名+空括号”,但并不因为这样就可以认为它们动态数组,它们仍然是静态数组,可以随时进行数组元素的处理。不过要在处理前,先测试上界,才能使用循环语句,否则只能用 for each next语句。
6)vb对象类型中的“Microsoft equation 3.0”和word中的“Microsoft equation 3.0”没有大区别,甚至可以说,它们是一样的,都是微软的核心技术。
7)function过程可以看作是用户自定义一个函数(作为内部函数的一种补充),sub过程可以看作是自定义一个过程(把常用过程单独抽出来,作为简化程序的方法之一)。
8)使用function过程可以实现的功能,也可以用sub过程实现,所以function过程有被淘汰的危险。
9)象sub过程一样,function过程也可以使用call命令。。
10)调用Sub过程有以下两种方法: (1)使用Call语句。格式:Call 过程名([实参表]) (2)直接使用过程名,格式:过程名[实参表]。但是也有例外的情况,如果参数是窗体,那么sub过程相当改变窗体的属性,那么可以直接用sub过程名作为属性,比如form1.formset(form2),此时,用sub过程(也就是formset)定义的属性先用于form1,再用鱼form2。如果参数是控件,那么sub过程相当改变控件的类型,那么可以直接用sub过程名作为对象,比如ctrtest.caption=”kitty”。以上对于参数为对象的sub过程,还可以直接在表达式调用sub过程。
11) 过程递归调用中,最重要的是找出终值计算的条件和依次两次结果之间的关系。
12)“类模块”的内容较难,非计算机专业的本科生免修“类模块”。
13)如果形参表中使用了关键词paramarray,则其他任何类型参数都不再使用关键词optional。这个原因很复杂,至今微软都没做出解释。所以只能死记硬背。
14)全局变量要在窗体模块和标准模(.bas)中的通用声明段用Global或Public语句来声明。而不是仅限于标准模(.bas)中的通用声明段。Global语句和Public语句,作用完全相同。
15)模块级变量用dim和private声明的效果没有什么大区别,但 Private 更好些,因为很容易把它和 Public 区别开来,使代码更容易理解。

上面看法对否,请指正,请补充,谢谢!

» 猜你喜欢

南宁
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

neobe

铜虫 (著名写手)

★ ★ ★ ★ ★
liangduoqiang(金币+3,VIP+0):所担负 5-23 17:09
liangduoqiang(金币+2,VIP+0):afs 5-24 16:14
我已经不学VB好多年,当初的梦想还没实现。
关于固定长度,好像只要定义的时候as string就行了,后面不要加一个固定的字符数限制,哪怕实际上就是固定长度。
function所实现的功能确实能以sub来实现,但是function的存在更有利于功能模块的移植,它是一个框架。淘汰与否,不敢评论。
过程递归调用中,最重要的是找出终值计算的条件和依次两次结果之间的关系。
这个很同意,这个“找出”的过程,其实是一次一次判断选择,直至最终碰到可以直接计算出来具体值的条件,然后依次有序的返回。
少思虑以养心气,寡色趣以养肾气,常运动以养骨气,戒嗔怒以养肝气,薄滋味以养胃气,省言语以养神气
4楼2009-05-19 09:21:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 5 个回答

小可有礼了

至尊木虫 (著名写手)


liangduoqiang(金币+1,VIP+0):3 5-23 17:09
3)function过程可以定义为字符型数据(固定长度除外),请问“固定长度”如何界定?
why固定长度?
'// 得到固定长度字符串的函数
Public Function getFixedLenString(dest As String, fixedLen As Integer)
   If getMixedStringlen(dest) > fixedLen Then
       getFixedLenString = Left(dest, fixedLen)
   Else
       getFixedLenString = dest + String(fixedLen - getMixedStringlen(dest), " "
   End If
End Function

'// 得到混合字符串的长度的函数
Public Function getMixedStringlen(strMixed As String)
   getMixedStringlen = LenB(StrConv(strMixed, vbFromUnicode))
End Function
2楼2009-05-19 06:33:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sunhw_hit

木虫 (正式写手)

永不落地的飞鸟

楼主太牛了!!我看蒙了绑定!
上帝给我机会选择交换,于是我用自己的双足换做一对翅膀!
3楼2009-05-19 08:46:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

neobe

铜虫 (著名写手)

谢谢楼主 有幸得金币5个 格外感激

[ Last edited by neobe on 2009-5-25 at 12:45 ]
少思虑以养心气,寡色趣以养肾气,常运动以养骨气,戒嗔怒以养肝气,薄滋味以养胃气,省言语以养神气
5楼2009-05-19 09:25:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见