<имя заданного файла>_tmp<номер записанного файла>.wav
например, beethoven01_tmp0.wav
После этого вызывается процедура ConcatenateFiles, которая в зависимости от параметра бинарно соединяет звуковые файлы в один. Однако при проигрывании (несмотря на присутствие данных из других файлов) слышны только данные из самого первого файла. Размер полученного соединением звукового файла равен суммарному размеру всех соединяемых файлов, но проигрывается только первый из них

ЗЫ. Пробовал отрезать "передний кусок" данных файлов, идущих за самым первым (содержит подпись RIFF...WaveFMT) и удалять последнюю тысячу байт (содержит пустые данные) в тех же самых файлах. Результат - нуль

Вот код самой процедуры:
- Код: Выделить всё
Public Sub ConcatenateFiles(DestFileName As String, FileNumber)
On Error Resume Next
Err.Clear
Dim tmpDir As String
Dim SourceArray() As Byte
Dim DestArray() As Byte
tmpDir = Environ("TEMP")
If Len(Trim(tmpDir)) = 0 Then tmpDir = Environ("TMP")
If Len(Trim(tmpDir)) = 0 Then
tmpDir = "C:\Temp\"
End If
If Mid(tmpDir, Len(tmpDir), 1) <> "\" Then tmpDir = tmpDir & "\"
tmpDir = tmpDir & "PROG123.TMP\"
Err.Clear
Close #1
Open DestFileName For Binary As #1
For i = 0 To FileNumber
DoEvents
Open tmpDir & _
Mid(GetFileNameIN(DestFileName), 1, _
Len(GetFileNameIN(DestFileName)) - 4) & _
"_tmp" & Trim(Str(i)) & ".wav" For Binary As #2
ReDim SourceArray(LOF(2) + 1)
Get #2, , SourceArray()
xi = UBound(DestArray)
Err.Clear
If xi = 0 Then
xi = 0
ReDim DestArray(UBound(SourceArray))
Else
ReDim Preserve DestArray(xi + UBound(SourceArray))
End If
xx = 0
For inx = xi To xi + UBound(SourceArray)
DoEvents
If xi <> 0 And xx = 0 Then xx = 42
If (xi + UBound(SourceArray)) - xx <= 1000 Then
ReDim Preserve DestArray(inx)
Exit For
End If
DestArray(inx) = SourceArray(xx)
xx = xx + 1
Next inx
Close #2
Next i
Put #1, , DestArray()
Close #1
End Sub
ЗЗЫ. При соединении утилитой copy из командной строки Windows XP результат такой же.
ЗЗЗЫ. Заранее спасибо за любую помощь в этом деле
