< -->

Program VoiceText;{v1.0; beg30.10.2002}
{$D-,G+}
Uses ProgFace, OkrMouse;
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;
  DSegm : Word;
  WH : tWaveHeader;
  PrCh : TParentChunk;
  Chunk : TChunk;
  WF : TWaveFormat;
  Xe : Boolean;
  i : Word;
{-----------------------}
Procedure Handler(Mask,Buttons,X,Y,DX,DY: Integer);
begin
  if MouseIn(27, 14, 37, 15) then Xe:=False;
end;
{-------------------------}
Procedure WCA(C:array of Char; t:Word);
var
  i : Word;
begin
 for i := 0 to t do Write(C[i]);
 WriteLn;
end;
{------------------}
begin
 ClrScr;
 CursorOff;
 PutCursor(1, 1);
 SetAttr(15, 0, MnAttrK);
 SetAttr(14, 0, MnAttrM);
{ Write('Введите имя .WAV файла: ');
 ReadLn(S);}
 {$I-}
 S:='C:\WINDOWS\MEDIA\tada.wav';
 Assign(f,S);
 Reset(f,1);
 {$I+}
 if IOResult<>0 then
  begin
    WriteLn('IO Error!!!');
    ReadKey;
    RestoreScreen;
    Halt;
  end;
 BlockRead(f, WH, SizeOf(WH));
 Close(f);
 with WH do
  begin
    WriteLn(Word(True),' ', Word(False));
    WriteLn('-=_+-=_+-=_+-=_+-=_+-=_+-=_+-=_+-=_+-=_+-=_+-=_+-=_+-=_+', WinAttr);
    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;
 DoMenuLine(1, 1, 'Alt+F ', 'File ');
 DoMenuLine(12, 1, 'F1 ', 'Help ');
 DoMenuLine(20, 1, 'F9 ', 'ProduceWAV ');
 DoMenuLine(34, 1, 'F3 ', 'Open ');
 DoMenuLine(42, 1, 'F10 ', 'Menu ');
 DoMenuLine(51, 1, 'Insert ', 'AddFile ');
 DoMenuLine(66, 1, 'Del ', 'Delete ');
 SaveBar(1,2,80,25);
 SetAttr(Green,Black,WinAttr);
 SetAttr(LightCyan,Black,WBorderAttr);
 SetAttr(LightGreen+Blink,Black,WinHAttr);
 SetWindow(1,2,80,25,1,' Главное окно ',True);
 ZZCursor;
 WriteLine('DEMO Demo DEMO         Программа Voice Text', WinAttr);
 NewLine;
 WriteLine(' предназначена для преобразования (конвертирования) текстовых ', WinAttr);
 NewLine;
 WriteLine('                   файлов в звуковые WAV-файлы', WinAttr);
 SaveBar(25,8,60,17);
 SetAttr(LightMagenta, Black, WBorderAttr);
 SetAttr(LightGreen, Magenta, WinHAttr);
 SetWindow(25,8,60,17,2,'VoiceTex v1.0',True);
 ZZCursor;
 NewLine;
 WriteLine('   Copyright', WinAttr);
 NewLine;
 WriteLine(' (C) Okrugin Alexandr, 2002', WinAttr);
 NewLine;
 WriteLine('', WinAttr);
 SetAttr(LightBlue+Blink, Black, MnAttrK);
 SetAttr(Yellow, Black, MnAttrM);
 DoMenuLine(27, 14, '         ', '  Нажмите любую клавишу');
 SetAttr(Yellow, Cyan, ButtAttr);
 SetAttr(Red, Cyan, ButtLight);
 SetAttr(Yellow, Black, ButtShadow);
 SetButton(27, 14, 2, ' O''Key');
 SetButtSize(15, 4);
 SetButton(40,13,2,' Cancel ');
 SetButtSize(10, 2);
 InitMouse;
 MouseScreen;
 ShowMouse;
 Xe := True;
{ SetMouseHandler(LeftButton, Handler);}
 While not MousePressed do;
 ReadKey;
{ While Xe do;}
 ClearMouseHandler;
 SetAttr(LightGreen, Blue, ButtAttr);
 SetAttr(LightRed, Blue, ButtLight);
 SetAttr(Black, Black, ButtShadow);
 SetButton(27, 14, 3, '  O''Key');
 Delay(5,0);
 UndoMenu;
 UndoMenu;
 DoMenuLine(27, 20, ' O''Key      ', '  Нажмите любую клавишу');
 SetAttr(LightGreen, Black, WinHAttr);
 SetAttr(LightGray, Black, WinAttr);
 SetAttr(Cyan,Black,WBorderAttr);
 SetWindChar(#255);
 SetWindow(1,2,80,25,2,' Главное окно ',False);
 ZZCursor;
 WriteLine(' В луже купались два поросёнка...', WinAttr);
 ReadKey;
 SetDelay(0,0);
 SetAttr(Green, Blue, WinHAttr);
 SetAttr(DarkGray+Blink, Yellow, WinAttr);
 SetAttr(LightCyan,Black,WBorderAttr);
 SetWindChar(#219);
 SetWindow(2,3,30,10,2,'  Это фигня!!!  ',True);
 ReadKey;
 SetAttr(LightBlue, White, WinHAttr);
 SetAttr(White, Cyan, WinAttr);
 SetAttr(LightRed,Red,WBorderAttr);
 SetWindChar(#254);
 SetWindow(25,8,55,15,1,' Чистой воды  )( @ [ k e r',True);
 ReadKey;
 SetAttr(Yellow, Blue, WinHAttr);
 SetAttr(Black, Green, WinAttr);
 SetAttr(Brown, Blue,WBorderAttr);
 SetWindChar(#220);
 SetWindow(35,12,65,23,1,' Borland Turbo Pascal v7.0 ',True);
 ReadKey;
 SetAttr(Red+Blink, Cyan, WinHAttr);
 SetAttr(Yellow, Red, WinAttr);
 SetAttr(LightCyan,Cyan,WBorderAttr);
 SetWindChar(#$B0);
 SetWindow(2,3,79,24,2,' ----- }{acker  ][ @ c k e r -----',False);
 SetAttr(Blue, Red, WinHAttr);
 SetAttr(Brown, Blue, WinAttr);
 SetAttr(White,Black,WBorderAttr);
 SetWindChar(#$B2);
 SetWindow(23,7,57,18,1,' Заканчиваю работу (-:  +  :-) ',True);
 ReadKey;
 RestoreScreen;
 WriteLn;
end.

Назад