Советы по Delphi. Версия 1.0.6 - [6]
>var J: Integer;
>begin
> for J:= 0 to MaxN do Kk.yyy[J]:= 0.0;
> Kk.MinO:= 0.0;
> Kk.MaxO:= 0.0;
> Kk.Last:= MaxN;
>end; {InitSignals}
>procedure InitAllSignals;
>begin
> InitSignals(K0R);
> InitSignals(K0B);
> InitSignals(K1R);
> InitSignals(K1B);
> InitSignals(K2R);
> InitSignals(K2B);
> InitSignals(K3R);
> InitSignals(K3B);
>end; {InitAllSignals}
>var chunkname: string[4];
>procedure ReadChunkName;
>var I : integer;
> MM : Byte;
>begin
> ChunkName[0]:= chr(4);
> for i := 1 to 4 do begin
> Read(InFile, MM);
> ChunkName[I]:=chr(MM);
> end;
>end; {ReadChunkName}
>procedure ReadChunkSize;
>var I: integer;
> MM : Byte;
>begin
> ChunkSize.x:= F0;
> ChunkSize.lint := 0;
> for i:= 0 to 3 do begin
> Read(InFile, MM);
> ChunkSize.chrs[I]:= MM;
> end;
> ChunkSize.x:= T1;
>end; {ReadChunkSize}
>procedure ReadOneDataBlock(var Ki,Kj:Observation);
>var I: Integer;
>begin
> if n<=maxn then begin
> ReadChunkSize; {получаем 4 байта данных}
> ChunkSize.x:=M1;
> with Ki.WAV do case nChannels of
> 1:
> if nBitsPerSample=16 then begin {1..2 Помещаем в буфер одноканальный 16-битный сэмпл}
> Ki.yyy[N]:=1.0*ChunkSize.up;
> if N
> N:= N+2;
> end else begin {1..4 Помещаем в буфер одноканальный 8-битный сэмпл}
> for I:=0 to 3 do Ki.yyy[N+I]:=1.0*ChunkSize.chrs[I];
> N := N+4;
> end;
> 2:
> if nBitsPerSample=16 then begin {2 Двухканальный 16-битный сэмпл}
> Ki.yyy[N]:=1.0*ChunkSize.dn;
> Kj.yyy[N]:=1.0*ChunkSize.up;
> N:= N+1;
> end else begin {4 Двухканальный 8-битный сэмпл}
> Ki.yyy[N]:=1.0*ChunkSize.chrs[1];
> Ki.yyy[N+1]:=1.0*ChunkSize.chrs[3];
> Kj.yyy[N]:=1.0*ChunkSize.chrs[0];
> Kj.yyy[N+1]:=1.0*ChunkSize.chrs[2];
> N:= N+2;
> end;
> end;
> if N<=MaxN then begin {LastN:= N;}
> Ki.Last:= N;
> if Ki.WAV.nChannels=2 then Kj.Last := N;
> end else begin {lastn := maxn;}
> Ki.Last:= MaxN;
> if Ki.WAV.nChannels=2 then Kj.Last := MaxN;
> end;
> end;
>end; {ReadOneDataBlock}
>procedure ReadWAVFile(var Ki, K : Observation);
>var MM: Byte;
> I: Integer;
> OK: Boolean;
> NoDataYet: Boolean;
> DataYet: Boolean;
> nDataBytes: LongInt;
>begin
> if FileExists(StandardInput)then with Ki.WAV do begin { Вызов диалога открытия файла }
> OK:= True; {если не изменится где-нибудь ниже}
> {Приготовления для чтения файла данных}
> AssignFile(InFile, StandardInput); { Файл, выбранный в диалоговом окне }
> Reset(InFile);
> {Считываем ChunkName "RIFF"}
> ReadChunkName;
> if ChunkName<>'RIFF' then OK:= False;
> {Считываем ChunkSize}
> ReadChunkSize;
> RIFFSize:= ChunkSize.lint; {должно быть 18,678}
> {Считываем ChunkName "WAVE"}
> ReadChunkName;
> if ChunkName<>'WAVE' then OK:= False;
> {Считываем ChunkName "fmt_"}
> ReadChunkName;
> if ChunkName<>'fmt ' then OK:= False;
> {Считываем ChunkSize}
> ReadChunkSize;
> fmtSize:= ChunkSize.lint; {должно быть 18}
> {Считываем formatTag, nChannels}
> ReadChunkSize;
> ChunkSize.x:= M1;
> formatTag:= ChunkSize.up;
> nChannels:= ChunkSize.dn;
> {Считываем nSamplesPerSec}
> ReadChunkSize;
> nSamplesPerSec := ChunkSize.lint;
> {Считываем nAvgBytesPerSec}
> ReadChunkSize;
> nAvgBytesPerSec:= ChunkSize.lint;
> {Считываем nBlockAlign}
> ChunkSize.x:= F0;
> ChunkSize.lint:= 0;
> for i:= 0 to 3 do begin
> Read(InFile, MM);
> ChunkSize.chrs[I]:= MM;
> end;
> ChunkSize.x:= M1;
> nBlockAlign:= ChunkSize.up;
> {Считываем nBitsPerSample}
> nBitsPerSample:= ChunkSize.dn;
> for I:= 17 to fmtSize do Read(InFile,MM);
> NoDataYet:= True;
> while NoDataYet do begin
> {Считываем метку блока данных "data"}
> ReadChunkName;
> {Считываем DataSize}
> ReadChunkSize;
> DataSize:= ChunkSize.lint;
> if ChunkName <> 'data' then begin
> for I:= 1 to DataSize do {пропуск данных, не относящихся к набору звуковых данных}
> Read(InFile, MM);
> end else NoDataYet:= False;
> end;
> nDataBytes:= DataSize;
> {Наконец, начинаем считывать данные для байтов nDataBytes}
> if nDataBytes>0 then DataYet:= True;
> N:=0; {чтение с первой позиции}
> while DataYet do begin
> ReadOneDataBlock(Ki,Kj); {получаем 4 байта}
> nDataBytes:= nDataBytes-4;
> if nDataBytes<=4 then DataYet:= False;
> end;
> ScaleData(Ki);
> if Ki.WAV.nChannels=2 then begin Kj.WAV:= Ki.WAV;
> ScaleData(Kj);
> end;
> {Освобождаем буфер файла}
> CloseFile(InFile);
> end else begin
> InitSpecs;{файл не существует}
> InitSignals(Ki);{обнуляем массив "Ki"}
> InitSignals(Kj);{обнуляем массив "Kj"}
> end;
>end; { ReadWAVFile}
>{================= Операции с набором данных ====================}
>const MaxNumberOfDataBaseItems = 360;
>type SignalDirectoryIndex = 0..MaxNumberOfDataBaseItems;
>VAR DataBaseFile: file of Observation;
>LastDataBaseItem: LongInt; {Номер текущего элемента набора данных}
>ItemNameS: array[SignalDirectoryIndex] of String[40];
>procedure GetDatabaseItem(Kk : Observation; N : LongInt);
>begin
> if N
> Seek(DataBaseFile, N);
> Read(DataBaseFile, Kk);
> end else InitSignals(Kk);
>end; {GetDatabaseItem}
>procedure PutDatabaseItem(Kk : Observation; N : LongInt);
>begin
> if N
> Seek(DataBaseFile, N);
> Write(DataBaseFile, Kk);
> LastDataBaseItem:= LastDataBaseItem+1;
Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.
Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.