IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

> Массивы
Reber
сообщение 25.11.2002 13:10
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 44

Репутация: -  0  +


Разве так нельзя писать?
Type
     a=array[1..n] of integer

Пишет Error 133...


--------------------
Играйте в футбол
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
SKVOZNJAK
сообщение 22.11.2003 10:15
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 930
Пол: Мужской

Репутация: -  11  +


Цитата
:DХотя предется писать еще несколько процедур для работы!!!!


Да уж ещё несколько процедур наверно понадобятся  :)
Вот как примерно может выглядеть файловый массив для одновременного использования разных типов переменных. Если почаще "попадать" в 512 байтное окно, то обращения к диску будут минимальные. Вместо типизованных констант, можно использовать гл. перемееные.

UNIT CEBURAS;
interface

FUNCTION PAKMAN(FAG:BYTE;DUR,BAIT:LONGINT):LONGINT;{(ФЛАГ,АДРЕС(>0),БАЙТ)}
{ФЛАГИ: 1 - BYTE ЗАПИСЬ, 2 - BYTE ЧТЕНИЕ, 3 - INTEGER ЗАПИСЬ,
4 - INTEGER ЧТЕНИЕ, 7 - WORD ЗАПИСЬ, 8 - WORD ЧТЕНИЕ,
9 - LONGINT ЗАПИСЬ, 10 - LONGINT ЧТЕНИЕ}
PROCEDURE PAKIN(UU:STRING;ZZ:LONGINT);{СОЗДАНИЕ ФАЙЛА С ИМЕНЕМ ЗАДАННЫМ В
                                      UU:STRING И ДЛИНОЙ РАВНОЙ ZZ*512}
PROCEDURE PAKEEV(UU:STRING); {ПРИВЯЗКА МАССИВА К УЖЕ ГОТОВОМУ ФАЙЛУ,
                             UU:STRING - ИМЯ ЭТОГО ФАЙЛА}
PROCEDURE PAKFIG;{ОБНУЛЕНИЕ ТЕКУЩЕГО СЕГМЕНТА БЕЗ ЗАПИСИ РЕЗУЛЬТАТОВ В ФАЙЛ}
PROCEDURE PAKMENT;{ЗАПИСЬ ТЕКУЩЕГО СЕГМЕНТА В ФАЙЛ}

implementation
USES CRT,DOS;
VAR Q7: FILE;
   Q8: LONGINT; {ДЕЙСТВУЮЩИЙ СЕГМЕНТ(ПРИ ПЕРВОМ СЕГМЕНТЕ Q8=0)}
   {UY:STRING[12]; }
CONST U:ARRAY[0..511] OF BYTE =(
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);


PROCEDURE CVB(J,K:LONGINT);
BEGIN
RESET(Q7,1); SEEK(Q7,J);
BLOCKWRITE(Q7,U,512); CLOSE(Q7);
RESET(Q7,1); SEEK(Q7,K);
BLOCKREAD(Q7,U,512);  CLOSE(Q7);
END;

PROCEDURE CXB(K:LONGINT);  {СОВМЕЩЕНИЕ СЕГМЕНТОВ}
VAR  E: WORD;
    Q,W,T: LONGINT;
BEGIN
T:=K DIV 512;
E:=K MOD 512;
IF T>0 THEN BEGIN
       IF E>0 THEN T:=T+1;
            END;
IF Q8<>T THEN BEGIN
         Q:=Q8*512;
         W:=T*512;
         CVB(Q,W);
         Q8:=T;
              END;
END;


FUNCTION PAKMAN(FAG:BYTE;DUR,BAIT:LONGINT):LONGINT;
LABEL 1, 100;
VAR Q, W: LONGINT;
   F :^INTEGER;
   G :^WORD;
   R :^LONGINT;
BEGIN
Q:=DUR-1;
CXB(Q);
W:=Q MOD 512;
CASE FAG OF
1:    BEGIN    {BYTE ЗАПИСЬ}
     U[W]:=BAIT;
     PAKMAN:=0;
     GOTO 100;
     END;
2:    BEGIN    {BYTE ЧТЕНИЕ}
     PAKMAN:=U[W];
     GOTO 100;
     END;
3:    BEGIN    {INTEGER ЗАПИСЬ}
     IF W=511 THEN GOTO 1;
     F:=ADDR(U[W]);
     F^:=BAIT;
     PAKMAN:=0;
     GOTO 100;
     END;
4:    BEGIN    {INTEGER ЧТЕНИЕ}
     IF W=511 THEN GOTO 1;
     F:=ADDR(U[W]);
     PAKMAN:=F^;
     GOTO 100;
     END;
7:    BEGIN    {WORD ЗАПИСЬ}
     IF W=511 THEN GOTO 1;
     G:=ADDR(U[W]);
     G^:=BAIT;
     PAKMAN:=0;
     GOTO 100;
     END;
8:    BEGIN    {WORD ЧТЕНИЕ}
     IF W=511 THEN GOTO 1;
     G:=ADDR(U[W]);
     PAKMAN:=G^;
     GOTO 100;
     END;
9:    BEGIN    {LONGINT ЗАПИСЬ}
     IF W>508 THEN GOTO 1;
     R:=ADDR(U[W]);
     R^:=BAIT;
     PAKMAN:=0;
     GOTO 100;
     END;
10:   BEGIN    {LONGINT ЧТЕНИЕ}
     IF W>508 THEN GOTO 1;
     R:=ADDR(U[W]);
     PAKMAN:=R^;
     GOTO 100;
     END;
END;
1: WRITELN('ВВЕДЕНЫ НЕПРАВИЛЬНЫЕ ДАННЫЕ: ФЛАГ=',FAG,' СМЕЩЕНИЕ=',Q8,'   ');
  SOUND(120);DELAY(2000);SOUND(70);DELAY(1000);
100: END;


PROCEDURE PAKIN(UU:STRING;ZZ:LONGINT);
VAR Q:LONGINT;
   W:ARRAY[0..511] OF LONGINT;
BEGIN
Q8:=0;
ASSIGN(Q7,UU); REWRITE(Q7,1);
FOR Q:=1 TO ZZ DO BLOCKWRITE(Q7,W,512);
CLOSE(Q7);
END;


PROCEDURE PAKEEV(UU:STRING);
BEGIN
Q8:=0;
ASSIGN(Q7,UU);
END;


PROCEDURE PAKFIG;
VAR W: WORD;
BEGIN
FOR W:=0 TO 511 DO U[W]:=0;
END;


PROCEDURE PAKMENT;
VAR  W:LONGINT;
BEGIN
W:=Q8*512;
RESET(Q7,1); SEEK(Q7,W);
BLOCKWRITE(Q7,U,512); CLOSE(Q7);
END;


BEGIN
END.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Reber   Массивы   25.11.2002 13:10
trminator   Re: Массивы   25.11.2002 14:48
AlaRic   Re: Массивы   25.11.2002 16:33
Reber   Re: Массивы   25.11.2002 18:17
AlaRic   Re: Массивы   25.11.2002 19:18
Ivs   Re: Массивы   25.11.2002 19:23
trminator   Re: Массивы   26.11.2002 11:25
mj   Re: Массивы   2.12.2002 0:30
Alex   Re: Массивы   2.12.2002 15:49
AGPA   Re: Массивы   7.12.2002 15:16
Demik   Re: Массивы   19.11.2003 23:26
Demik   Re: Массивы   19.11.2003 23:29
SKVOZNJAK   Re: Массивы   22.11.2003 10:15


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 26.07.2025 16:45
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"