9 Июнь 2008

Вопрос 7 Написать процедуру поиска кол-ва автомобилей заданной марки в типизированном файле: марка автомобиля, кол-во лошадиных сил, кол-во посадочных мест.

const n=5;
type
sved=record
marka:string[10];
l_sil:integer;
P_mest:integer;
end;
var
F:File of sved;
avto:sved;
i,kol:integer;

Procedure marka;
begin
assign(F,’avto.dat’);
reset(f);
writeln(’vvedite marku’);
readln(marka);
kol:=0;
while not (eof(f)) do
begin
read(F,avto);
if avto.marka=marka then
kol:=kol+1;
end;
close(f);
end;

Procedure zapolnenie;
begin
assign(F,’avto.dat’);
rewrite(F);
for i:=1 to n do
begin
writeln(’vvedite marku avto’);
readln(avto.marka);
writeln(’vvedite kol-vo loshd sil’);
readln(avto.l_sil);
writeln(’vvedite kol-vo posad mest’);
readln(avto.p_mest);
writeln(F,avto);
end;
end;

begin
zapolnenie;marka;
writeln(kol-vo mashin zadannoi marki -,kol);
readln;
end.

Вопрос 6 Написать процедуру создания типизированного файла: марка автомобиля, кол-во лошадиных сил, кол-во посадочных мест.

program affto;

Type

car=record

marka: string;

moshnost: integer;

mesta: integer;

end;

var

cr: car;

f: file of car;

i:integer;

{Тут процедура начинается}

procedure createfile;

begin

assign (F, ‘cars.dat’);

rewrite (F);

For I:=1 TO 20 DO

begin

writeln (’Vvedite marku’);

readln (cr.marka);

writeln (’Vvedite moshnost (v loshadinyh silah)’);

readln (cr.moshnost);

writeln (’Vvedite kolichestvo mest’);

readln (cr.mesta);

write (f, cr);

end;

close (f);

end;

12. Бинарные и текстовые файлы

В бинарном файле данные хранятся как неформатированная последовательность файлов. В таком файле нет записей и полей. Такие файлы характеризуются большой гибкостью, но эта гибкость требует от программиста гораздо большей работы по контролю над тем, что и где сохраняется в файле.

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

При первом открытии файла указатель находится в позиции 1. После любой операции чтения или записи указатель помещается сразу или после прочитанных или записанных данных. Значение файлового указателя можно определить или изменить с помощью оператора Seek и Loc. Можно использовать функцию Eof для определения достижения конца файла.

Для записи данных в бинарный файл используется оператор Put, для чтения оператор get.

Put # fn, pos, var

Get # fn, pos, var

Необязательный аргумент, описывающий позицию байта, который должен произвести запись или чтение.

Var-объявляем переменную.

Эти операторы автоматически читают и записывают количество байтов, содержащихся в переменной. Если Var – сторона переменной длины, то количество переданных байтов равно количеству символов.

Гибкость с бинарным файлом требует дополнительной работы для отслеживания и сохранения данных. Сдвиг файлового указателя на 1 байт может привести к чтению бессмысленных данных.

Некоторые важные аспекты при работе с бинарными файлами:

  1. чтобы добавить новые данные в конец существующего бинарного файла выполняется оператор Seek # fn, Lot (fn)+1 для перемещения указателя в конец файла. Если записать данные в существующий бинарный файл в позицию перед концом файла новые данные будут записаны поверх существующего.
  2. При записи данных в позицию указателей находящегося за пределами файла они будут расширены до новой длины. Однако часть файла между первоначальным концом файла и новыми данными снижает (снимает) неопределенные значения.
  3. При чтении данных в позицию указателя выход за рамки файла не выдается сообщение об ошибке, но полученные в результате данные будут бессмысленными.

11. Файлы с последовательным и произвольным доступом.

Последовательные файлы представляют собой текстовый файл. Данные в последовательном файле хранят ряд записей. Длина каждой записи не фиксирована, а определяет ее содержимое. Конец одной записи и начало другой отмечается символом CRLE(возврат каретки). Единственный символ в строке обозначает, пустую запись. Последовательные файлы называются так, потому что их записи должны считаться последовательно от начала файла.

Файл с произвольным доступом сохраняет данные как ряд записей фиксированного элемента. Размер каждой записи определяется в момент создания файла. Записи последовательно нумеруются, начиная с 1. Файл с произвольным доступом разрешает непосредственный доступ к каждой записи по ее номеру. Каждая запись в файле с произвольным доступом содержит фиксированное количество файлов или символов. Каждая запись содержит 1 или больше полей и каждое поле имеет фиксированную длину.

Использование файлов с последовательным доступом:

Для записи данных в последовательный файл используется оператор Write # filenum list

Если аргумент list не задан, то в файл записывается пустая строка. Оператор Write автоматически вставляет обязательные разделители между полями, запятые и кавычки. Для чтения данных из последовательного файла используется оператор Input # filenum, Varlist-список переменных. Input-читает данные из файла последовательно.

Если читаются данные переменного типа строки, то конец поля отмечается одним из последовательных файлов: Запятая, если поле не начинается с двойных кавычек, символ возврата каретки CR/LF. Если оператор Input читает данные в числовую переменную конец поля отмечается запятой одним или большим количеством пробелов или символов CR/LF (конец строки).

Использование файлов с произвольным доступом:

Состоит из записей:

Отличие состоит в том, что они состоят (записи одинаковой длины и программа отличает одну запись от другой по ее положению в файле). Записи последовательно пронумерованы, начиная с единицы, а максимальное количество записей 2147483647.

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

User defined type - UDT, представляет собой структуру, содержащую 2 или более элемента.

Для записи данных с произвольным доступом используется оператор Put # fn recnum Item.

Recnum-необязательный элемент, определяющий номер записи в файле, которые должны быть сохранены.

Put # fn,

Our employees (2)

Для записи данных существующих файлов без перезаписи содержимого следует записи добавлять в конец файла. Для этого используется оператор Lot, тогда:

NumRecords= Lot (fn)/Len (Item)

Put # fn, NumRecords+1, Item

Для чтения данных из файла с произвольным доступом используются операторы Get # fn, recnum, item.

Некоторые способы работы с файловыми указателями:

Seek (fn)-возвращает текущую позицию файлового указателя

Seek fn, position-устанавливает указатель на указанную позицию

Loc (fn)-возвращает номер последней записи прочитанной или записанной. Если файл только что открыт, возвращает 0.

10. Работа с файлами в VBA.

написано в рубрике: Информационные технологии (Т) — Метки: , , — Михаил @ 21:28

Доступ к файлам VBA подразумевает выполнение 3 действий:

- открытие файла

- чтение или запись файла

- закрытие файла

Имеются 3 разных типа файлов:

- последовательные файлы

- файлы с произвольным доступом

- бинарные файлы

Открытие файлов:

Прежде чем начать запись или чтение файла его необходимо открыть. Файл открывается при помощи оператора Open, в котором используется следующий синтаксис:

Open Filename for mode Access lock

As # filenum LEN = reclen

Filename – строка определяет название файла, который необходимо открыть.

Mode – необязательный аргумент, который определяет режим доступа к файлу возможного значения:

APPEND – последовательный доступ к файлу. Если файл уже существует, то данные присоединяются в конец файла, если файл не существует, то они отсоединяются.

BINARU – бинарный доступ к файлу для чтения и записи.

INPUT – последовательный доступ к файлу только для чтения, если файл не существует, то возникает ошибка.

OUTPUT – последовательный доступ только для записи. Если файл существует, он удаляется и создается заново, если не существует, то просто создается.

RANDOM – произвольный доступ для чтения и записи данных. Этот режим используется по умолчанию, если аргумент mod не задан.

ACCESS – необязательный аргумент, определяющий операции которые размещены с открытым файлом.

READ – файл открыт только для чтения.

WRITE - файл открыт только для записи.

READWRITE - файл открыт только для чтения и записи.

Закрытие файлов:

Close # Filenum

Close F1, F2, F3.

Close

© Проект «Студенты-Программеры»., 2008. Все права защищены.
Перепечатка материалов только при наличии активной ссылки на источник.
Powered by WordPress