读取文件内容的简洁方法
读取text文件的最快方法是使用Input$函数,就象下面的过程:
Function FileText (filename$) As String
Dim handle As Integer
handle = FreeFile
Open filename$ For Input As #handle
FileText = Input$(LOF(handle), handle)
Close #handle
End Function
使用上述方法要比使用Input命令读取文件每一行的方法快很多。下面是应用这个函数读取Autoexec.bat的内容到多行textbox控件的例子:
Text1.Text = FileText("c:\autoexec.bat")
但请注意:当文件包含Ctrl-Z(EOF)字符时,上面的函数代码可能会发生错误。因此,要修改一下代码:
Function FileText(ByVal filename As String) As String
Dim handle As Integer
’ 判断文件存在性
If Len(Dir$(filename)) = 0 Then
Err.Raise 53 ’文件没有找到
End If
’ 以binary模式打开文件
handle = FreeFile
Open filename$ For Binary As #handle
’ 读取内容,关闭文件
FileText = Space$(LOF(handle))
Get #handle, , FileText
Close #handle
End Function
字体对象克隆招法
当要应用一个控件的字体到另一控件时,最直接的方法就是直接赋值:
Set Text2.Font = Text1.Font
但多数情况下这种方法并不奏效,因为这实际上是将同一字体的引用分配给了2个控件。换言之,当随后修改其中之一控件的字体时,另外一个控件也受到影响。因此,要实现我们的目的,需要做的就是克隆字体对象并赋值给需要的控件。
最简单的克隆字体的方法是手工地拷贝所有单独的字体属性,就象下面一样:
Function CloneFont(Font As StdFont) As StdFont
Set CloneFont = New StdFont
CloneFont.Name = Font.Name
CloneFont.Size = Font.Size
CloneFont.Bold = Font.Bold
CloneFont.Italic = Font.Italic
CloneFont.Underline = Font.Underline
CloneFont.Strikethrough = Font.Strikethrough
End Function
’函数的应用
Set Text2.Font = CloneFont(Text1.Font)
如果使用VB6,就可以使用PropertyBag对象快速拷贝所有字体属性,并且代码会很简练、速度也快2倍:
Function CloneFont(Font As StdFont) As StdFont
Dim pb As New PropertyBag
’拷贝字体到PropertyBag对象中
pb.WriteProperty "Font", Font
’恢复字体对象到新控件
Set CloneFont = pb.ReadProperty("Font")
End Function
但是我们还能进一步地对代码进行优化,方法就是使用可被所有StdFont对象识别的隐藏IFont接口。这个接口具有一个Clone方法,用它就可以精确地实现我们的目的。它以非正常方式执行:创建一个克隆Font对象,然后返回相应的引用。这可能是实现克隆目的的最简洁代码了,而且,执行速度也是这里列举的3种方法中最快的一个,要比使用PropertyBag对象的方法快大约3倍左右。来看看具体代码:
Function CloneFont(Font As IFont) As StdFont
Font.Clone CloneFont
End Function