Цитата:
Сообщение от Dmitry_DM
А можно так попробовать? Теоретический это правильно?
Код:
Z: array [0..10000,0..10000] of Int64;
.....
|
А какой смысл вводить посредника в виде массива z?
- Программа уже загрузила сэмплы звукового файла в массив WavInfo.Samples, а теперь мы их ещё копируем в массив z - получаем как минимум двойной расход памяти на пустом месте
- Первая размерность массива отвечает за количество каналов. Зачем здесь зарезервировано столько каналов? Бывает "моно" (1 канал), бывает "стерео" (2 канала), бывает ещё "4+1", "5+1", ну пусть 10 каналов, но десять тысяч это уже что-то невероятное - получаем ещё бесполезный перерасход памяти
- Вторая размерность массива отвечает за количество сэмплов. В массиве z зарезервировано память всего под десять тысяч семплов, а ведь недавно ты открывал звуковой файл в котором было 398592 сэмплов - в этот массив он никак не влезет
- Почему тип элементов массива z выбран Int64? Звуковые файлы в формате WAVEFORMATEX PCM бывают либо 8-битные (1 байт), либо 16-битные (2 байта), а массив z резервирует для них по 64 бита (8 байт) - опять бесполезный перерасход памяти
И ещё, где инициализируется переменная J вот в этом цикле?:
Код:
for I := 1 to NumSamples do
begin
s:=(s+z[j,i]);
end;
Да и в следующих циклах тоже?