|
VB经验杂谈(1)
自由民 2001-07-10 17:28:49
胡搞VB两三年,自产自销遇到麻烦不少,每每问题迎刃而解总想写点什么跟大家分享。所谓“前车之覆,后车之鉴”,现将小悟整理成文,给初学者一点指引,免得多走冤枉路。
Null和空格 其实,不管对哪门语言,谁都知道Null和空格有区别(用十六进制表示,空格是20,Null是00)。然而理论归理论,有时往往在你自己觉得很清楚时,错误已悄悄降临,而且往往错得你莫名其妙,看看我这个错误你是否也犯过? 现要新建一随机文件,要求每条纪录的存储位置由用户指定(譬如:假设第一、第二条还没有被使用,而用户指定纪录存储在第三条),在列出所有纪录时,将每条纪录显示在列表框中,如果某单元空闲着没被使用,则在列表框中添加“空纪录”字样。现假设一条纪录只有一个姓名字段,并定义该字段类型为字符串,占8字节,可做如下定义: Type record Name As String * 8 End Type 可谁知道,这个问题的判断,竟然让我钻了两个胡同,我的两个胡同程序片断如下: Dim name_rec as String ‘取出一条纪录时存储Name字段的值 if Trim(name_rec)="" then list1.additem("空纪录") else list1.additem(name_rec) end if
Dim name_rec as String if name_rec=" " then ‘其中为8个空格 list1.additem("空纪录") else list1.additem(name_rec) end if 事实上你会发现上述两种方法都不行,问题就在于这儿没被使用的字段存储的是Null而不是空格,而Trim操作的返回值只能去除字符中的空格字符,对Null当然无能为力了。而第二种方法中的" "也只是8个空格而已,和8个Null是两码事。 经过很长时间的摸索,才发现正确的操作应该是这样: Dim name_rec as String if name_rec=String(8,chr(0)) then list1.additem("空纪录") else list1.additem(name_rec) end if 其中chr(0)表示Null,String(8,chr(0))相当于构造了一个含有8个Null的字符串。 颜色的表示 在窗体设计过程中,窗体的背景色为灰色,即BackColor属性为&H8000000F&,如果你选择窗体的背景色为红色,则BackColor属性变为&H000000FF&。然而在设计阶段可以指定的颜色值太少了,你完全可以在运行阶段更改颜色值。 要在运行阶段获得更丰富的色彩,可以通过两种方式来实现:
|下一页||尾 页|
|