Χρειάζομαι βοήθεια για να διορθώσετε το συνημμένο κώδικα VB6 που υποτίθεται ότι θα λάβει ένα αρχείο ήχου και γίνεται διαχωρισμός σε 5 ίσα μέρη.
Αυτός είναι ο τρόπος που αυτός ο κώδικας θα πρέπει να εργαστεί:
Το πρώτο μέρος ξεκινά από την αρχή του αρχείου Track.wav. Το δεύτερο μέρος ξεκινά απ 'όπου η πρώτη διάσπαση μέρος τελείωσε. Το τρίτο μέρος ξεκινάει απ 'όπου η δεύτερη διάσπαση μέρος τελείωσε. Το τέταρτο μέρος ξεκινάει απ 'όπου το τρίτο διάσπαση μέρος τελείωσε. Το πέμπτο μέρος ξεκινάει απ 'όπου η τέταρτη διάσπαση μέρος τελείωσε.
Ουσιαστικά κάθε ένα από τα τμήματα του αρχείου αποτελεί συνέχεια της προηγούμενης από την κατάτμηση αρχείο. Μετά τη διάσπαση έχω 1.wav, 2.wav, 3.wav. 4.wav και 5.wav όλα προέρχονται από ένα αρχείο Track.wav. Ο κωδικός που επισυνάπτεται ήδη χωρίζει το αρχείο σε πέντε ίσα μέρη, αλλά το πρόβλημα είναι ότι όλα τα ηχητικά μέρη είναι το ίδιο με το πρώτο μέρος, αντί να συνεχιστεί.
Χρειάζομαι βοήθεια για να πάρει αυτό που καθορίζεται με το έργο όπως θα έπρεπε σε VB6 (δεν ΝΕΤ). Θα ήμουν ευγνώμων για τη βοήθειά σας με αυτό.
Dim Wavlength As Integer
Private Sub Command1_Click()
On Error Resume Next
DoFirstWav
Me.SetFocus
End Sub
Private Sub DoFirstWav()
On Error Resume Next
Dim ByteData() As Byte
Dim FirstWav As Integer
FirstWav = Wavlength / 5
ByteData = ReadFile(App.Path & \Track.wav, 1, FirstWav & 0000)
Call WriteFile(App.Path & \Segments\1.wav, ByteData)
DoSecondWav
End Sub
Private Sub DoSecondWav()
On Error Resume Next
Dim ByteData() As Byte
Dim SecondWav As Integer
SecondWav = Wavlength / 5
ByteData = ReadFile(App.Path & \Track.wav, 1, SecondWav & 0000)
Call WriteFile(App.Path & \Segments\2.wav, ByteData)
DoThirdWav
End Sub
Private Sub DoThirdWav()
On Error Resume Next
Dim ByteData() As Byte
Dim ThirdWav As Integer
ThirdWav = Wavlength / 5
ByteData = ReadFile(App.Path & \Track.wav, 1, ThirdWav & 0000)
Call WriteFile(App.Path & \Segments\3.wav, ByteData)
DoFourthWav
End Sub
Private Sub DoFourthWav()
On Error Resume Next
Dim ByteData() As Byte
Dim FourthWav As Integer
FourthWav = Wavlength / 5
ByteData = ReadFile(App.Path & \Track.wav, 1, FourthWav & 0000)
Call WriteFile(App.Path & \Segments\4.wav, ByteData)
DoFifthWav
End Sub
Private Sub DoFifthWav()
On Error Resume Next
Dim ByteData() As Byte
Dim FifthWav As Integer
FifthWav = Wavlength / 5
ByteData = ReadFile(App.Path & \Track.wav, 1, FifthWav & 0000)
Call WriteFile(App.Path & \Segments\5.wav, ByteData)
MsgBox Wav Split Successfully, vbInformation
End
End Sub
Private Function ReadFile(ByVal strFileName As String, Optional ByVal lngStartPos As Long = 1, Optional ByVal lngFileSize As Long = -1) As Byte()
On Error Resume Next
Dim FilNum As Integer
FilNum = FreeFile
Open strFileName For Binary As #FilNum
If lngFileSize = -1 Then
ReDim ReadFile(LOF(FilNum) - lngStartPos)
Else
ReDim ReadFile(lngFileSize - 1)
End If
Get #FilNum, lngStartPos, ReadFile
Close #FilNum
End Function
Private Function WriteFile(ByVal strFileName As String, ByteData() As Byte, Optional ByVal lngStartPos As Long = -1, Optional ByVal OverWrite As Boolean = True)
On Error Resume Next
Dim FilNum As Integer
FilNum = FreeFile
If OverWrite = True And Dir(strFileName) <> Then
Kill strFileName
End If
Open strFileName For Binary As #FilNum
If lngStartPos = -1 Then
Put #FilNum, LOF(FilNum) + 1, ByteData
Else
Put #FilNum, l, ByteData
End If
Close #FilNum
End Function
Private Sub Form_Load()
On Error Resume Next
Dim MyInt As Integer
Dim MyByte As Byte
Dim MyStr As String * 4
Dim MyLong As Long
Dim SampleRate, BytesPerSample, FileSize As Long
Open App.Path & \Track.wav For Binary Access Read Lock Read As #1
Get #1, , MyStr: Debug.Print Riff = ; MyStr
Get #1, , MyLong: Debug.Print File size = ; MyLong
FileSize = MyLong
Get #1, , MyStr: Debug.Print Wave = ; MyStr
Get #1, , MyStr: Debug.Print Format = ; MyStr
Get #1, , MyLong: Debug.Print Any = ; MyLong
Get #1, , MyInt: Debug.Print formatTag = ; MyInt
Get #1, , MyInt: Debug.Print Channels = ; MyInt
Get #1, , MyLong: Debug.Print Samples per Sec = ; MyLong
SampleRate = MyLong
Get #1, , MyInt: Debug.Print Bytes per Sec = ; MyInt
Get #1, , MyInt: Debug.Print BlockAlign = ; MyInt
Get #1, , MyInt: Debug.Print Bytes per Sample = ; MyInt
BytesPerSample = MyInt
Close #1
Wavlength = FileSize / (SampleRate * BytesPerSample)
End Sub