Советы по Delphi. Версия 1.0.6 - страница 8
>
> 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;
> end else while lastdatabaseitem<=n do begin
> Seek(DataBaseFile, LastDataBaseItem);
> Write(DataBaseFile, Kk);
> LastDataBaseItem:= LastDataBaseItem+1;
> end else ReportError(1); {Попытка чтения MaxNumberOfDataBaseItems}
>end; {PutDatabaseItem}
>procedure InitDataBase;
>begin
> LastDataBaseItem:= 0;
> if FileExists(StandardDataBase) then begin
> Assign(DataBaseFile,StandardDataBase);
> Reset(DataBaseFile);
> while not EOF(DataBaseFile) do begin
> GetDataBaseItem(K0R, LastDataBaseItem);
> ItemNameS[LastDataBaseItem]:= K0R.Name;
> LastDataBaseItem:= LastDataBaseItem+1;
> end;
> if EOF(DataBaseFile) then if LastDataBaseItem>0 then LastDataBaseItem:= LastDataBaseItem-1;
> end;
>end; {InitDataBase}
>function FindDataBaseName(Nstg: String): LongInt;
>var ThisOne : LongInt;
>begin
> ThisOne:= 0;
> FindDataBaseName:= –1;
> while ThisOne
> if Nstg = ItemNameS[ThisOne] then begin
> FindDataBaseName:= ThisOne;
> Exit;
> end;
> ThisOne:= ThisOne+1;
> end;
>end; {FindDataBaseName}
>{======================= Инициализация модуля ========================}
>procedure InitLinearSystem;
>begin
> BaseFileName:= '\PROGRA~1\SIGNAL~1\';
> StandardOutput:= BaseFileName + 'K0.wav';
> StandardInput:= BaseFileName + 'K0.wav';
> StandardDataBase:= BaseFileName + 'Radar.sdb';
> InitAllSignals;
> InitDataBase;
> ReadWAVFile(K0R,K0B);
> ScaleAllData;
>end; {InitLinearSystem}
>begin {инициализируемый модулем код}
> InitLinearSystem;
>end. {Unit LinearSystem}
Даты
Вычисление даты Пасхи
>function TtheCalendar.CalcEaster:String;
>var B,D,E,Q:Integer;
> GF:String;
>begin
> B:= 225-11*(Year Mod 19);
> D:= ((B-21)Mod 30)+21;
> If d>48 then Dec(D);
> E:= (Year+(Year Div 4)+d+1) Mod 7;
> Q:= D+7-E;
> If q<32 then begin
> If ShortDateFormat[1]='d' then Result:= IntToStr(Q)+'/3/'+IntToStr(Year)
> else Result:='4/'+IntToStr(Q-31)+'/'+IntToStr(Year);
> end else begin
> If ShortDateFormat[1]='d' then Result:= IntToStr(Q-31)+'/4/'+IntToStr(Year)
> else Result:='4/'+IntToStr(Q-31)+'/'+IntToStr(Year);
> end;
> {вычисление страстной пятницы}
> If Q<32 then begin
> If ShortDateFormat[1]='d' then GF:= IntToStr(Q-2)+'/3/'+IntToStr(Year)
> else GF:='3/'+IntToStr(Q-2)+'/'+IntToStr(Year);
> end else begin
> If ShortDateFormat[1]='d' then GF:= IntToStr(Q-31-2)+'/4/'+IntToStr(Year)