< -->

Program VoiceTextWavCompiler;{v1.0; beg30.10.2002}
Uses Crt;
type
{Структура заголовка WAV - файла}
   tWaveHeader = record
     RIFF : array[0..3] of Char;{'RIFF'}
     DataLength : LongInt;{р-р файла}
     WAVEfmt : array[0..7] of Char;{'WAVEfmt'}
     Size : LongInt;{р-р}
     PCM : Word;{признак импульсно-кодовой модуляции}
     Channels : Word;{число каналов}
     DiscFreq : LongInt;{частота дискретизации зв. сигнала}
     BytePerSec : LongInt;{число байт в секунду}
     UnitLen : Word;{р-р блока данных}
     BitSample : Word;{Разрядность выборки}
     Extra : Word;{доп. инфо}
     Data : array[0..3] of Char;{'data'}

   end;
{Более полно}
type
   TChar4 = array[0..4] of Char;
   TParentChunk = record
     RIFF : TChar4;
     Size : LongInt;
     ID : TChar4;
     Offset : LongInt;{смещение раздела data от начала файла}
   end;
   TChunk = record
     ID : TChar4;
     Size : LongInt;
     Offset : LongInt;{смещение раздела данных от нач. файла}
   end;
type
   TWaveFormat = record
     FormatTag : Word;
     Channels : Word;
     Frequency : LongInt;
     AVByteRate : LongInt;
     BlockAlign : Word;
     Fidelity : Word;
   end;
{type
  WavF = record
    PC : TParentChunk;
    C : TChunk;
    WF : TWaveFormat;
  end;}
{_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+}
var
  S : String;
  f : file;
  WH : tWaveHeader;
  PrCh : TParentChunk;
  Chunk : TChunk;
  WF : TWaveFormat;
  i : Word;
Procedure WCA(C:array of Char; t:Word);
var
  i : Word;
begin
 for i := 0 to t do Write(C[i]);
 WriteLn;
end;
begin
{ Write('Введите имя .WAV файла: ');
 ReadLn(S);}
 {$I-}
 S:='F:/AUDIO/WAV/kiss.wav';
 Assign(f,S);
 Reset(f,1);
 {$I+}
 if IOResult<>0 then
  begin
    Close(f);
    WriteLn('IO Error!!!');
    Halt;
  end;
 BlockRead(f, WH, SizeOf(WH));
 Close(f);
 with WH do
  begin
    WriteLn('-=_+-=_+-=_+-=_+-=_+-=_+-=_+-=_+-=_+-=_+-=_+-=_+-=_+-=_+');
    Write('RIFF: ');
    WCA(RIFF, 3);
    WriteLn('DataLength: ', DataLength);
    Write('WAVEfmt: ');
    WCA(WAVEfmt, 7);
    WriteLn('Size: ', Size);
    WriteLn('PCM: ', PCM);
    WriteLn('Channels: ', Channels);
    WriteLn('DiscFreq: ', DiscFreq);
    WriteLn('BytePerSec: ', BytePerSec);
    WriteLn('UnitLen: ', UnitLen);
    WriteLn('BitSample: ', BitSample);
    WriteLn('Extra: ', Extra);
    Write('Data: ');
    WCA(Data, 3);
  end;
  ReadKey;
end.

Назад