< -->
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(' Программа 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, 2003', WinAttr);
NewLine;
WriteLine('', WinAttr);
SetAttr(LightBlue+Blink, Black, MnAttrK);
SetAttr(Yellow+Blink, Black, MnAttrM);
DoMenuLine(29, 13, '', ' Нажмите любую клавишу');
SetAttr(Yellow, Cyan, ButtAttr);
SetAttr(Red, Cyan, ButtLight);
SetAttr(Yellow, Black, ButtShadow);
SetButton(37, 15, 2, ' O''Key');
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(37, 15, 3, ' O''Key');
Delay(5,0);
UndoMenu;
UndoMenu;
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);
RestoreScreen;
WriteLn;
end.
Назад