Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PAS1~1.doc
Скачиваний:
1
Добавлен:
07.11.2018
Размер:
283.65 Кб
Скачать

4.1. Текстовые файлы.

Текстовый файл в ПАСКАЛЕ представляет собой совокупность строк переменной длины. Доступ к каждой строке последовательный. В конце каждой строки имеется признак конца строки EOLN – ASCII(13),(10). В конце файла имеется признак конца файла ASCII(26).

Читать и записывать информацию в текстовом файле можно командами (процедурами) READ( f, <список>), READLN (f, <список>), WRITE( f, <список>), WRITELN( f, <список> ). Проверять на конец строки функцией EOLN(f).

При каждой операции указатель положения смещается и можно делать проверки положения указателя функциями SeekEOF(f) и SeekEOLN(f).

4.2. Типизированные файлы.

Для типизированных файлов считается, что длина каждого компонента постоянна. Номер первого – 0. Чтение и запись информации аналогична, однако можно сразу перейти на нужный компонент командой Seek(f, <номер компоненты>).

Также можно получить номер текущей компоненты командой FILEPOZ(f) и общий размер файла командой FILESIZE(f).

Можно также удалить часть файла, начиная с текущей позиции, командой TRUNCATE(f).

4.3. Нетипизированные файлы.

Для файлов такого типа считается, что тип компонент может быть любым. Исходя из этого, программист сам должен определить размер читаемой/записываемой компоненты, а само действие производится командами BLOCKREAD(f, buf,N,[Result]) и BLOCKWRITE( f, buf, N, [Result]). Здесь buf – пременная-буфер, N – число компонент, Result – возврат фактического числа компонент операции.

Остальные команды и функции аналогичны работе с типизированными файлами.

5. Работа с памятью.

Вся оперативная память в компьютере, работающем в реальном режиме, сегментирована по 64 Кб. Паскаль позволяет управлять только размером стека. По умолчанию это 16 Кб. Директивой {$M<стек>, <мин.дин.память>, <макс.дин.память>} можно задать нужный размер стека и динамической памяти. Динамическая память используется для размещения в ней динамических переменных в виде например списков «резиновой» длины. Для размещения переменных любого типа используются указатели, которые обозначаются значок «^».

Для объявления типа указателя значок ставится перед этим типом, например:

Var point1:^integer;

Xp:^real;

Можно использовать и стандартный тип Pointer.

Память под любую типизированную динамическую переменную выделяется процедурой NEW, а освобождается DISPOSE. Для нетипизированных переменных используются GETMEM(P,<размер>) и FREEMEM(P,<размер>), где Р – нетипизированный указатель. Также можно освободить память процедурами MARK и Release, если запомнить текущее положение указателя HEAPPTR.

Если указатель не связан ни с каким конкретным объектом, то ему рекомендуется присвоить пустую ссылку NIL.

К памяти можно обращаться и прямо по физическим адресам через специальные массивы Mem – для байт, MemW – для слов, MemL – для двойных слов. Например Mem[5:10] означает обращение к ячейке памяти $0005:$000A.

Для обращения к портам ввода – вывода можно использовать массивы Port и PortW, найдя адреса устройств в справочнике.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]