Показать сообщение отдельно
  #52  
Старый 31.08.2012, 12:16
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Dmitry_DM
Тогда, может, здесь?
Код:
 for I := 1 to NumSamples do
      begin
        for J := 1 to WavInfo.WaveFormat.nChannels do
        begin
          fs.ReadBuffer(Sample, BytsPerSample);
          case BytsPerSample of
            1: Sample := Shortint(Sample);
            2: Sample := SmallInt(Sample);
          end;
      WavInfo.Samples[J - 1, I - 1] := Sample;
      if Abs(Sample) > WavInfo.MaxAmplitude then WavInfo.MaxAmplitude := Abs(Sample);
        end;
      end;
    WavInfo.NumSamples := LongInt(NumSamples);
    end;
Правильно, здесь. Только в этом месте WavInfo это никакая не глобальная переменная, а формальный параметр процедуры ReadWavInfo:
Код:
procedure ReadWavInfo(const FileName: string; var WavInfo: TWavInfo);
А фактически, здесь будет участвовать переменная, которую сюда подставит тот, кто вызовет процедуру ReadWavInfo, а вызов этой процедуры происходит здесь:
Код:
procedure  TForm1.Button1Click(Sender: TObject);
...
begin
...
      ReadWavInfo(OpenDialog1.FileName, FWavInfo);
...
end;
Итого получается следующее:
Button1Click - читает wav-файл и записывает информацию о нём в переменную FWavInfo.
Button4Click - пытается прочитать переменную WavInfo чтобы записать её содержимое в файл, но у Button4Click конечно же ничего не получается, так как в переменную WavInfo данные никто не заносил.
Ответить с цитированием