360 .. -, _________ Приложение
if not EMSErrorFlag then begin
/Создаем базовый объект TEMSVector} TEMSVector.InittASize,0,Sz-1) ;
if not EMSErrorFlag then begin
GetMem(Index,NInd*12);
(Вычисляем множители каждого измерения и формируем список границ Index*}
Index*[NInd,З] :- I; (Младший индекс} Index^INInd,!] :- Indx[NInd,1];
Index^NInd^] := Indx[NInd,2];
for k := NInd-1 downto 1 do begin
Index* [k,l] :=• Indx[k,l];
Index^k^] :» Indx[k,2];
Sz :- 0;
for j :" k+1 to NInd do
Sz :- Зг+^аех^з^-Хг^ех'''^,!!*!)*!"^*!:]^];
Index* [k,3] :- Sz •nd;
MIndex :- NXnd end •nd
•nd; (TEMSArray.lnit) (,....-, -———————;
Destructor TEMSArray.Done;
(Уничтожает объект TEMSArray - уничтожает базовый объект TEMSVector и освобождает память Index"} begin
TEMSVector.Done;
FreeMem(Index,NIndex*12)
•nd; {TEMSArray.Done} ^—-—.—.——————;
Constructor TEMSArray.Load(var F: file);
{Загружает объект TEMSArray из файла S' - сначала загружает базовый объект TEMSVector, затем читает заголовок RegHeadTEMSArray, noneHIndex и список границ индексов} vac
S: String;
k,j: Integer;
begin
TEMSVector.Load(F);
if not EMSErrorFlag then
if ReadFile(F,S,SizeOf(RegHeadTEMSArray)) and
(S=RegHeadTEMSArray) and ReadFile(F,NIndex,2) then begin
GetMem(Index,NIndex*12);
for k :- 1 to NIndex do begin
ReadFile(F,Index*[k,1],4);
ReadFile (F, Index* [1с, 2], 4) ;
ReadFile(F.Index*[k,3],4) •nd;
it EMSErrorFlag then
Done end else begin