Советы по 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;
Java Enterprise Edition (Java EE) остается одной из ведущих технологий и платформ на основе Java. Данная книга представляет собой логичное пошаговое руководство, в котором подробно описаны многие спецификации и эталонные реализации Java EE 7. Работа с ними продемонстрирована на практических примерах. В этом фундаментальном издании также используется новейшая версия инструмента GlassFish, предназначенного для развертывания и администрирования примеров кода. Книга написана ведущим специалистом по обработке запросов на спецификацию Java EE, членом наблюдательного совета организации Java Community Process (JCP)
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Когда приходится инкапсулировать, то иногда лучше меньше, чем большеЯ начну со следующего утверждения: Если вы пишете функцию, которая может быть выполнена или как метод класса, или быть внешней по отношению к классу, Вы должны предпочесть ее реализацию без использования метода. Такое решение увеличивает инкапсуляцию класса. Когда Вы думаете об использовании инкапсуляции, Вы должны думать том, чтобы не использовать методы.Удивлены? Читайте дальше.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Embedded system software. General requirements for development and documentationСтандарт подготовлен в развитие ГОСТ Р ИСО/МЭК 12207-99 «Информационная технология. Процессы жизненного цикла программных средств» с целью учета специфики разработки и документирования программного обеспечения встроенных систем реального времени.
«Как пасти котов» – это книга о лидерстве и руководстве, о том, как первое совмещать со вторым. Это, если хотите, словарь трудных случаев управления IT-проектами. Программист подобен кошке, которая гуляет сама по себе. Так уж исторически сложилось. Именно поэтому так непросто быть руководителем команды разработчиков. Даже если вы еще месяц назад были блестящим и дисциплинированным программистом и вдруг оказались в роли менеджера, вряд ли вы знаете, с чего надо начать, какой выбрать стиль руководства, как нанимать и увольнять сотрудников, проводить совещания, добиваться своевременного выполнения задач.