VB检查文件的大小和检测文件MD5值的代码如下,根据下面注释和实际应用分析:
1、VB代码检查文件大小代码如下。
/FileLen函数,返回Long,代表一个文件的长度,单位是字节。
语法:
FileLen(pathname)
必要的pathnam参数是用来指定一个文件名的字符串表达式。
pathname可以包含目录或文件夹、以及驱动器。
说明:
当调用FileLen函数时,如果所指定的文件已经打开,则返回的值是这个文件在打开前的大小。
注意:若要取得一个打开文件的长度大小,使用LOF函数。
/
//实际应用:
If FileLen(rstFields("pic1")) > 1 Then
Picture1Picture = LoadPicture(rstFields("pic1") & "")
L1Caption = Trim(rsttempFields("p1time") & "")
Else
Picture1Picture = LoadPicture("")
L1Caption = strNorz
End If
//文件的路径保存在数据库的pic1字段
2、VB检测文件的MD5值,代码如下。
Option ExplicitOption Base 0
Public Type MD5_CTX
i(1) As Long
buf(3) As Long
inc(63) As Byte
digest(15) As Byte
End Type
Public Declare Sub MD5Init Lib "Cryptdlldll" (ByVal pContex As Long)
Public Declare Sub MD5Final Lib "Cryptdlldll" (ByVal pContex As Long)
Public Declare Sub MD5Update Lib "Cryptdlldll" (ByVal pContex As Long, ByVal lPtr As Long, ByVal nSize As Long)
Public Function ConvBytesToBinaryString(bytesIn() As Byte) As String
Dim i As Long
Dim nSize As Long
Dim strRet As String
nSize = UBound(bytesIn)
For i = 0 To nSize
strRet = strRet & Right$("0" & Hex(bytesIn(i)), 2)
Next
ConvBytesToBinaryString = strRet
End Function
Public Function GetMD5Hash(bytesIn() As Byte) As Byte()
Dim ctx As MD5_CTX
Dim nSize As Long
nSize = UBound(bytesIn) + 1
MD5Init VarPtr(ctx)
MD5Update ByVal VarPtr(ctx), ByVal VarPtr(bytesIn(0)), nSize
MD5Final VarPtr(ctx)
GetMD5Hash = ctxdigest
End Function
Public Function GetMD5Hash_Bytes(bytesIn() As Byte) As String
GetMD5Hash_Bytes = ConvBytesToBinaryString(GetMD5Hash(bytesIn))
End Function
Public Function GetMD5Hash_String(ByVal strIn As String) As String
GetMD5Hash_String = GetMD5Hash_Bytes(StrConv(strIn, vbFromUnicode))
End Function
Public Function GetMD5Hash_File(ByVal strFile As String) As String
Dim lFile As Long
Dim bytes() As Byte
Dim lSize As Long
lSize = FileLen(strFile)
If (lSize) Then
lFile = FreeFile
ReDim bytes(lSize - 1)
Open strFile For Binary As lFile
Get lFile, , bytes
Close lFile
GetMD5Hash_File = GetMD5Hash_Bytes(bytes)
End If
End Function
但是,这个方法本身并不知道你给的字符串是什么语言,所以需要我们它这个字符串用什么语言读出。SpVoiceClass 类的Voice 属性就是用来设置语种的,我们可以通过SpVoiceClass 的GetVoices方法得到所有的语种列表,然后在根据参数选择相应的语种,比如设置语种为汉语如下所示:
private void SetChinaVoice()
{
voiceVoice = voiceGetVoices(stringEmpty,stringEmpty)Item(0) ;
}
0表示是汉用,1234都表示英语,就是口音不同。
这样,我们就设置了语种,如果结合发音方法,我们就可以设计出一个只发汉语语音的方法
private void SpeakChina(string strSpeak)
{
SetChinaVoice() ;
Speak(strSpeak) ;
}
只发英语语音的方法也是类似的,上面程序里有。
对于一段中英文混合的语言,我们让程序读出混合语音的方法就是:编程把这段语言的中英文分开,对于中文调用SpeakChina方法,英文调用SpeakEnglishi方法;至于怎样判断一个字符是英文还是中文,我采用的是判断asc码的方法,具体的类方法是通过AnalyseSpeak实现的。
这样,对于一段中英文混合文字,我们只需把它作为参数传递给AnalyseSpeak就可以了,他能够完成中英文的混合发音。
当然,对于发音的暂定、继续、停止等 *** 作,上面也给出了简单的方法调用,很容易明白。
下面简单介绍一下中文语音识别的方法:
先把该语音识别的类源代码贴在下面,然后再做说明:
public class SpRecognition
{
private static SpRecognition _Instance = null ;
private SpeechLibISpeechRecoGrammar isrg ;
private SpeechLibSpSharedRecoContextClass ssrContex =null;
private SystemWindowsFormsControl cDisplay ;
private SpRecognition()
{
ssrContex = new SpSharedRecoContextClass() ;
isrg = ssrContexCreateGrammar(1) ;
SpeechLib_ISpeechRecoContextEvents_RecognitionEventHandler recHandle =
new _ISpeechRecoContextEvents_RecognitionEventHandler(ContexRecognition) ;
ssrContexRecognition += recHandle ;
}
public void BeginRec(Control tbResult)
{
isrgDictationSetState(SpeechRuleStateSGDSActive) ;
cDisplay = tbResult ;
}
public static SpRecognition instance()
{
if (_Instance == null)
_Instance = new SpRecognition() ;
return _Instance ;
}
public void CloseRec()
{
isrgDictationSetState(SpeechRuleStateSGDSInactive) ;
}
private void ContexRecognition(int iIndex,object obj,SpeechLibSpeechRecognitionType type,SpeechLibISpeechRecoResult result)
{
cDisplayText += resultPhraseInfoGetText(0,-1,true) ;
}
}
我们定义了ssrContex 和isrg为语音识别的上下文和语法,通过设置isrg的DictationSetState方法,我们可以开始或结束识别,在上面的程序中是BeginRec和CloseRec方法。cDisplay 是我们用来输出识别结果的地方,为了能够在大部分控件上都可以显示结果,我用了一个Control 类来定义它。当然,每次语音识别后都会触发ISpeechRecoContextEvents_RecognitionEventHandler 事件,我们定义了一个这样的方法ContexRecognition来响应事件,并且在这个方法里输出识别结果。
这样,中文语音处理的一些最基本的问题就有了一个简单的解决方法,当然,这种方法还有很多不完善的地方,希望大家多提出批评意见,共同提高。
以上就是关于vb 检测文件大小或者检测文件md5全部的内容,包括:vb 检测文件大小或者检测文件md5、500分 求一套vb视频聊天程序 源码!!~、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)