Text, Text2.Text, Text3.Text, Text4.Text) Then 注释:执行截取失败
MsgBox “红箭提示信息:" & err_descr, vbOKOnly + vbExclamation 注释:返回错误信息
Else 注释:执行截取成功
MsgBox“红箭提示信息:文件截取操作已经圆满完成!", vbOKOnly + vbExclamation
End If
End Sub
Private Sub Form_Load()
Me.Caption = App.Title
Me.Left = (Screen.Width - Me.Width) / 2
Me.Top = (Screen.Height - Me.Height) / 2 注释:窗体居中
End Sub
Private Sub Form_Unload(Cancel As Integer)
End 注释:结束工程
End Sub
(第二步)添加一个模块,输入以下代码:
Option Explicit 注释:变量检查
Type FileSection
Bytes() As Byte 注释:定义关键数组
End Type
Type SectionedFile
Files() As FileSection 注释:定义辅助数组
End Type
Public Function jieQU(Yname As String, Kshi As Long, CHang As Long, Bname As String) As Boolean 注释:定义截取操作函数
Form1.MousePointer = 11 注释:设置鼠标指针为漏斗型
jieQU = True 注释:函数成功标志
Dim mlp As Integer, i As Integer, zhi As Long, fnum As Integer, fnum1 As Integer
Dim shuZU As Long, myfile As SectionedFile
shuZU = 2000000 注释:定义内存固定数组,长度为2兆
Kshi = Kshi * 2 ^ 20
注释:转换文件指针单位为字节
CHang = CHang * 2 ^ 20
注释:转换文件长度单位为字节
If CHang < shuZU Then
注释:如果截取长度太小
MsgBox “截取的文件长度不能小于2兆字节!", vbOKOnly + vbExclamation
jieQU = False
注释:返回操作失败标志,退出操作
Exit Function
End If
If CInt(CHang / shuZU) >= CHang / shuZU Then
mlp = CInt(CHang / shuZU)
Else
mlp = CInt(CHang / shuZU) + 1
End If
注释:计算需要进行操作的次数
fnum1 = FreeFile注释:返回第一个空闲文件通道
Open Bname For Binary As #fnum1 注释:以二进制方式打开影音文件
ReDim myfile.Files(1) 注释:重新分配内存辅助数组
With Form1.Ba1
.Visible = True
.Value = 0
.Max = mlp
.Min = 0 注释:展示进度条,提示操作进度
For i = 1 To mlp 注释:读取和写入数据
zhi = Kshi + (-1 + i) * shuZU 注释:计算第一个二进制通道指针
If i < mlp Then 注释:如果不是最后一次操作
ReDim myfile.Files(1).Bytes(1 To shuZU) 注释:定义主要内存数组2兆字节
fnum = FreeFile 注释:打开第二个空闲文件通道
Open Yname For Binary As #fnum 注释:以二进制方式打开被截取的影音文件
Seek #fnum, zhi 注释:指针定位
Get #fnum, , myfile.Files(1).Bytes 注释:获取数据
Close #fnum
Else 注释:如果是最后一次操作
ReDim myfile.Files(1).Bytes(1 To (CHang - (mlp - 1) * shuZU)) 注释:分配主要内存数组大小为最后遗留数据大小
fnum = FreeFile
Open Yname For Binary As #fnum
Seek #fnum, zhi 注释:定位指针
Get #fnum, , myfile.Files(1).Bytes
Close #fnum
End If
Put #fnum1, , myfile.Files(1).Bytes 注释:以二进制方式写入保存文件
.Value = i 注释:进度条开始运行
Next 注释:循环直到操作次数全部执行
Close #fnum1 注释:关闭文件通道
.Visible = False 注释:隐藏进度条
End With
Form1.MousePointer = 0 注释:还原鼠标指针指针
End Function
(第三步)运行调试工程,如