Функции для работы с файлами
1. До начала работы с файлами в Паскале необходимо установить связь между файловой переменной и именем физического дискового файла:
Assign(<файловая_переменная>, <имя_дискового_файла>)
Следует помнить, что имя дискового файла при необходимости должно содержать путь доступа к этому файлу, включая имя дисковода. При этом имя дискового файла – строковая величина, т.е. должна быть заключена в апострофы. Например:
Пример процедуры Assign в Паскале
Assign (chf, 'G:\Home\ Student\ Lang\ Pascal\ primer.dat');
2. После окончания работы с файлами на Паскале, они должны быть закрыты.
Close(<список файловых переменных>);
При выполнении этой процедуры закрываются соответствующие физические файлы и фиксируются сделанные изменения. Следует иметь в виду, что при выполнении процедуры close связь файловой переменной с именем дискового файла, установленная ранее процедурой assign, сохраняется, следовательно, файл можно повторно открыть без дополнительного использования процедуры assign.
3. Подготовка к записи в файл Паскаля
Rewrite(<имя_ф_переменной>);
Процедура Rewrite(f) (где f – имя файловой переменной) устанавливает файл с именем f в начальное состояние режима записи, в результате чего указатель устанавливается на первую позицию файла. Если ранее в этот файл были записаны какие-либо элементы, то они становятся недоступными.
4.Запись в файл Паскаля
Write(<имя_ф_переменной>, <список записи>);
При выполнении процедуры write(f, x) в ту позицию, на которую показывает указатель, записывается очередная компонента, после чего указатель смещается на следующую позицию. Естественно, тип выражения х должен совпадать с типом компонент файла.
5.Подготовка файла к чтению Паскаля
Reset(<имя_ф_переменной>);
Эта процедура ищет на диске уже существующий файл и переводит его в режим чтения, устанавливая указатель на первую позицию файла.
6.Чтение из файла в Паскале
Read(<имя_ф_переменной>,<список переменных>);
Рассмотрим результат действия процедуры read(f, v):
Состояние файла f и переменной v до выполнения процедуры:
Состояние файла f и переменной v после выполнения процедуры:
Для типизированных файлов при выполнении процедуры read() последовательно считывается, начиная с текущей позиции указателя, число компонент файла, соответствующее числу переменных в списке, а указатель смещается на это число позиций.
Reset(f1);
While not eof(f1) do begin
Readln(f1,s);{считываем очередную строку из первого файла}
End;
Close(f1); {заканчиваем работу с файлами}
7.Функция определения достижения конца файла в Паскале
Eof(<имя_ф_переменной>);
Название этой функции является сложносокращенным словом от end of file. Значение этой функции имеет значение true, если конец файла уже достигнут, т.е. указатель стоит на позиции, следующей за последней компонентой файла. В противном случае значение функции – false.
8.Файл Паскаля может быть открыт для добавления записей в конец файла
Append(<имя_ф_переменной>);
var
f: file;{файловая переменная f}
begin
assign(f,'test.txt'); {назначение файловой переменной f имени файла test.txt}
rewrite(f); {создание файла и открытие его для записи}
writeln(f,'Запись'); {запись информации в файл}
close(f); {закрытие файла}
end.
9.Поиск файла на диске.
Для того чтобы воспользоваться процедурами поиска FindFirst и FindNext необходимо добавить в раздел Uses модуль «Dos». В этом же модуле описан тип SearchRec.
Uses Dos;
Var
S:SearchRec;
Begin
FindFirst('*.exe',AnyFile,S);
While DosError=0 do
Begin
WriteLn(S.Name);
FindNext(S);
End;
FindClose(S);
End.
Чтобы отличить папки от файлов проверяем атрибут полученного объекта:
if (S.Attr and Directory) <> 0 then
Writeln(‘Это папка’)
Метод FindFirst позволяет искать только в текущей папке. Названия файлов полученные с помощью FindFirst и FindNext имеют кодировку в ANSI (Windows, CP1251).
10. Изменения текущей папки
ChDir( <путь>);
Функции работы со строками (модуль SysUtils).
Length(s:string):integer
Функция возвращает в качестве результата значение текущей длины строки-параметра
Пример.
n := length('Pascal'); {n будет равно 6}
Copy(s:string; index:integer; count:integer):string
Функция возвращает подстроку, выделенную из исходной строки s, длиной count символов, начиная с символа под номером index.
Пример.
s := 'Система Turbo Pascal';
s2 := copy(s, 1, 7); {s2 будет равно 'Система'}
s3 := copy(s, 9, 5); {s3 будет равно 'Turbo'}
s4 := copy(s, 15, 6); {s4 будет равно 'Pascal'}
Delete(var s:string; index,count:integer)
Процедура удаляет из строки-параметра s подстроку длиной count символов, начиная с символа под номером index.
Пример.
s := 'Система Turbo Pascal';
delete(s,8,6); {s будет равно 'Система Pascal'}
Insert(source:string; var s:string;index:integer)
Процедура предназначена для вставки строки source в строку s, начиная с символа index этой строки.
Пример.
s := 'Система Pascal';
insert('Turbo ',s,9); {s будет равно 'Система Turbo Pascal'}
Pos(substr,s:string):byte
Функция производит поиск в строке s подстроки substr. Результатом функции является номер первой позиции подстроки в исходной строке. Если подстрока не найдена, то функция возвращает 0.
Пример.
s := 'Система Turbo Pascal';
x1 := pos('Pascal', s); {x1 будет равно 15}
x2 := pos('Basic', s); {x2 будет равно 0}
UpperCase(const S: string): string;
Преобразует символы 'a'..'z' в строке S к верхнему регистру.
LowerCase(const S: string): string;
Преобразует символы 'A'..'Z' в строке S к нижнему регистру.
LTrim() - Удаляем все пробелы в левой части строки
RTrim() - Удаляем все пробелы в правой части строки
Trim() - Удаляем все пробелы по краям строки
RightStr() - Возвращаем правую часть стоки заданной длины
LeftStr() - Возвращаем левую часть стоки заданной длины
Приложение А
Министерство образования и науки РФ
ФГБОУ ВПО «Волгоградский государственный
архитектурно-строительный университет»
Себряковский филиал
Кафедра математических и естественно-научных дисциплин
Пояснительная записка к курсовой работе
по дисциплине
«Технология программирования»
Тема работы:
«Коллективная разработка ПО»
Выполнил студент гр. <группа>
Иванов И.И.
Проверил <должность >:
Иванов И.И.
Михайловка 2013