请教,关于一个网页编辑器的两个函数!
Private Function LoadTmpl(FileName As String) As String
Open FileName For Input As #1
TempStr = StrConv(InputB$(LOF(1), 1), vbUnicode)
TempStr = Replace(TempStr, "<%xhe$ExePath%>", CodeAppPath)
LoadTmpl = Replace(TempStr, "<%xhe$ImagePath%>", CodeAppPath & "HtmlEdit/Images/")
Close #1
End Function
Private Function LoadFile(FileName As String) As String
Open FileName For Input As #1
LoadFile = StrConv(InputB$(LOF(1), 1), vbUnicode)
Close #1
End Function
这两个函数中的StrConv函数一般在什么情况下使用,这儿为什么要转换为Unicode
这里还使用了lof函数获得字节数,为什么要使用转字节的方式,怎样判断该转字节还是字符?
inputB$()函数中,B后面的 $ 是不是多余的?可以省略吗?
以上问题望大侠们指教!
[解决办法]
StrConv函数的用途很多,但最大的用途是系统的缺省码页将字符串和Unicode 的相互转换.当你打开一个txt文件,这个文件的缺省编码格式是ANSI的(当然另存为其它格式也可以,可另存为体会一下),ANSI编码有一个严重问题----一个英文字符占一个字节,一个中文字符占二个字节,直接使用input(字符数,文件号)函数来读取整个文件无法获取整个文件的字符总数,无论是用FileLen还是LOF。因此要将打开的文件用input函数一次读取出来,只能用inputB(字节数,文件号)函数来读,InputB$(LOF(1), 1), 中的LOF(1)就是整个文件的字节总数。InputB$(LOF(1), 1)读取出来的是ANSI的字节数据,StrConv(InputB$(LOF(1), 1), vbUnicode)则将它转换成了Unicode字符串。B后面的 $ 不是多余的,相当于声明了数据类型为string,但VB可以对数据类型进行自动转换,省略了也未尝不可。