根据TopHead大虾的观点,俺来为你写程序:
Private Type FileHead
filename As String * 1024
filelength As Long
End TypePrivate Sub Command1_Click()
Dim vrSrcFiles(2)
vrSrcFiles(0) = "c:\1.cll"
vrSrcFiles(1) = "c:\a.cll"
vrSrcFiles(2) = "c:\hehe.cll"
MergeFilesToFile "c:\test.dat", vrSrcFiles
End SubPrivate Function MergeFilesToFile(szDestFile As String, vrSrcFiles As Variant) As Boolean
On Error GoTo Err_MergeFilesToFile
If Not IsArray(vrSrcFiles) Then
MergeFilesToFile = False
Exit Function
End If
Dim iFiles As Integer
iFiles = 0
For i = LBound(vrSrcFiles) To UBound(vrSrcFiles)
If Dir(vrSrcFiles(i)) <> "" Then
iFiles = iFiles + 1
End If
Next
If iFiles < 1 Then
MergeFilesToFile = False
Exit Function
End If
Open szDestFile For Binary As #1
Put #1, , iFiles
Dim recFileHead As FileHead
For i = LBound(vrSrcFiles) To UBound(vrSrcFiles)
If Dir(vrSrcFiles(i)) <> "" Then
With recFileHead
.filelength = FileLen(vrSrcFiles(i))
.filename = vrSrcFiles(i)
End With
Put #1, , recFileHead
End If
Next
Dim vrFileBuf() As Byte
For i = LBound(vrSrcFiles) To UBound(vrSrcFiles)
If Dir(vrSrcFiles(i)) <> "" Then
If ReadFileToBuffer(vrSrcFiles(i), vrFileBuf) = True Then
Put #1, , vrFileBuf
End If
End If
Next
Close #1
MergeFilesToFile = True
Err_MergeFilesToFile:
MsgBox Err.Description
MergeFilesToFile = False
End FunctionPrivate Function SplitFileToFiles(szDestFile As String) As Boolean
On Error GoTo Err_SplitFileToFiles
If Dir(szDestFile) = "" Then
SplitFileToFiles = False
Exit Function
End If
Open szDestFile For Binary As #1
Dim iFiles As Integer
Get #1, , iFiles
If iFiles > 0 Then
Dim arrFiles(iFiles) As FileHead
For i = 1 To iFiles
Get #1, , arrFiles(i)
Next
Dim vrFileBuf
For i = 1 To iFiles
ReDim vrFileBuf(arrFiles(i).filelength)
Get #1, , vfFilebuf
SaveBufferToFile arrFiles(i).filename, vrFileBuf
Next
End If
Close #1
SplitFileToFiles = True
Exit Function
Err_SplitFileToFiles:
MsgBox Err.Description
SplitFileToFiles = False
End FunctionPrivate Function ReadFileToBuffer(ByVal szFile As String, vrBuf As Variant) As Boolean
On Error GoTo Err_ReadFileToBuffer
If Dir(szFile) = "" Then
ReadFileToBuffer = False
Exit Function
End If
Dim lLen As Long
lLen = FileLen(szFile)
ReDim vrBuf(lLen)
Open szFile For Binary As #2
Get #2, , vrBuf
Close #2
ReadFileToBuffer = True
Exit Function
Err_ReadFileToBuffer:
ReadFileToBuffer = False
End FunctionPrivate Function SaveBufferToFile(ByVal szFile As String, ByRef vrBuf As Variant) As Boolean
On Error GoTo Err_SaveBufferToFile
SaveBufferToFile = False
If Trim(szFile) = "" Or IsNull(vrBuf) Then
Exit Function
End If
Open szFile For Binary As #2
Put #2, , vrBuf
Close #2
SaveBufferToFile = True
Exit Function
Err_SaveBufferToFile:
SaveBufferToFile = False
End Function
Private Type FileHead
filename As String * 1024
filelength As Long
End TypePrivate Sub Command1_Click()
Dim vrSrcFiles(2)
vrSrcFiles(0) = "c:\1.cll"
vrSrcFiles(1) = "c:\a.cll"
vrSrcFiles(2) = "c:\hehe.cll"
MergeFilesToFile "c:\test.dat", vrSrcFiles
End SubPrivate Function MergeFilesToFile(szDestFile As String, vrSrcFiles As Variant) As Boolean
On Error GoTo Err_MergeFilesToFile
If Not IsArray(vrSrcFiles) Then
MergeFilesToFile = False
Exit Function
End If
Dim iFiles As Integer
iFiles = 0
For i = LBound(vrSrcFiles) To UBound(vrSrcFiles)
If Dir(vrSrcFiles(i)) <> "" Then
iFiles = iFiles + 1
End If
Next
If iFiles < 1 Then
MergeFilesToFile = False
Exit Function
End If
Open szDestFile For Binary As #1
Put #1, , iFiles
Dim recFileHead As FileHead
For i = LBound(vrSrcFiles) To UBound(vrSrcFiles)
If Dir(vrSrcFiles(i)) <> "" Then
With recFileHead
.filelength = FileLen(vrSrcFiles(i))
.filename = vrSrcFiles(i)
End With
Put #1, , recFileHead
End If
Next
Dim vrFileBuf() As Byte
For i = LBound(vrSrcFiles) To UBound(vrSrcFiles)
If Dir(vrSrcFiles(i)) <> "" Then
If ReadFileToBuffer(vrSrcFiles(i), vrFileBuf) = True Then
Put #1, , vrFileBuf
End If
End If
Next
Close #1
MergeFilesToFile = True
Err_MergeFilesToFile:
MsgBox Err.Description
MergeFilesToFile = False
End FunctionPrivate Function SplitFileToFiles(szDestFile As String) As Boolean
On Error GoTo Err_SplitFileToFiles
If Dir(szDestFile) = "" Then
SplitFileToFiles = False
Exit Function
End If
Open szDestFile For Binary As #1
Dim iFiles As Integer
Get #1, , iFiles
If iFiles > 0 Then
Dim arrFiles(iFiles) As FileHead
For i = 1 To iFiles
Get #1, , arrFiles(i)
Next
Dim vrFileBuf
For i = 1 To iFiles
ReDim vrFileBuf(arrFiles(i).filelength)
Get #1, , vfFilebuf
SaveBufferToFile arrFiles(i).filename, vrFileBuf
Next
End If
Close #1
SplitFileToFiles = True
Exit Function
Err_SplitFileToFiles:
MsgBox Err.Description
SplitFileToFiles = False
End FunctionPrivate Function ReadFileToBuffer(ByVal szFile As String, vrBuf As Variant) As Boolean
On Error GoTo Err_ReadFileToBuffer
If Dir(szFile) = "" Then
ReadFileToBuffer = False
Exit Function
End If
Dim lLen As Long
lLen = FileLen(szFile)
ReDim vrBuf(lLen)
Open szFile For Binary As #2
Get #2, , vrBuf
Close #2
ReadFileToBuffer = True
Exit Function
Err_ReadFileToBuffer:
ReadFileToBuffer = False
End FunctionPrivate Function SaveBufferToFile(ByVal szFile As String, ByRef vrBuf As Variant) As Boolean
On Error GoTo Err_SaveBufferToFile
SaveBufferToFile = False
If Trim(szFile) = "" Or IsNull(vrBuf) Then
Exit Function
End If
Open szFile For Binary As #2
Put #2, , vrBuf
Close #2
SaveBufferToFile = True
Exit Function
Err_SaveBufferToFile:
SaveBufferToFile = False
End Function
解决方案 »
- VB+AT指令来做短信收发程序的问题,解决者满分相送,谢谢!
- vb如何列举出EXCEL文件中的所有工作表名?
- vb中怎样才能实现InputText只能输入数值不能输入文字
- 请问如何打印出覆盖在picturebox中的控件?
- 请问到底有无办法在select语句中加入自定义的函数
- vb中我建立了90个label(内容都不同的),然后又搞了个数组 L(89),怎样让一个数组同一个label联系上?谢谢!
- 一个关于对“文本文件”操作的问题!在线等候,问题解决后,立即结100分!
- 请教高手啊/我快被折磨死拉,谁来帮个忙啊?给分的真的
- 带数据库的VB程序共享问题,急!
- 像VB6里的代码编辑器是怎么做出来的???我是说过程与过程之间的那条线。
- 请再帮忙
- 快救我的命啊!!!
把.mdb中的某表添一个备注字段,然后把.ini和.txt装进去不就完了。