Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metod3O.doc
Скачиваний:
5
Добавлен:
14.08.2019
Размер:
6.93 Mб
Скачать

Сору (s:string; start, len:integer):string;

позволяет выделить из строки последовательность из len символов, начиная с номера start. Если start больше длины всей строки s, то функция вернет пустую строку, а если len больше, чем число символов от start до конца строки s, вернется остаток строки s, от start до конца. Например:

scopy:=сору(ABС***123, 4, 3);    {scopy ='***'}

scopy:=сору(АВС, 4, 3);                {scopy ="}

scopy:=copy(ABC***123, 4, 11);   {scopy ='*** 123}

Процедура

delete (var s:string; start, len:integer);

удаляет из строки s len символов, начиная с символа с номером start:

s:=СТРОКА;

delete (s, 2, 3);           {s ='СКА'}

После удаления подстроки ее оставшиеся части s как бы склеиваются.

Если start = 0 или превышает длину строки s, то строка не изменяется. Также не изменит строку значение len = 0. При len большем, чем остаток строки, будет удалена подстрока от start и до конца s. Это можно использовать при «подрезании» строк до заданной величины:

delete (s, 17, 255);

Здесь строки s длиной менее 17 символов пройдут через процедуру неизменными, а все остальные будут укорочены до длины в 16 символов.

Если start > 255, возникнет ошибка при выполнении.

Процедура

insert (subs:string; var s:string; start:integer);

вставляет строку subs в строку s, начиная с позиции start:

s:=Начало–конец;

insert (середина–, s, 8 );

{теперь s = Начало–середина–конец}

Если измененная строка s оказывается слишком длинной, то она автоматически укорачивается до объявленной длины s (при этом, как всегда, «теряется» правый конец строки).

2.6.5. Преобразование строк

Процедура

str (x[:width [:dec]]; var s:string);

служит для преобразования числовых значений в строковые, где х может быть переменной или значением целого или вещественного типов. Можно задавать поля формата, указывая ширину поля для числа и число знаков после десятичной точки. Для целых значений можно задать только поле width, для действительных – либо оба поля (формат с фиксированной точкой), либо одно width. В последнем случае задается экспоненциальный формат общей длиной width. Можно задавать значения полей формата целочисленными переменными или константами:

var f, п:integer;

s : string;

. . . . . . . . . . . . . . . . . . .

f:=7; n:=2;

str(–123.456:f:n, s);      {s = –123.46}

str(1.234567:6:4, s);     {s =1.2346}

Процедура

val (s:string; var v:t; var errcode:integer);

преобразует числовые значения, записанные в строке s, в числовую переменную v (t – описание типа этой переменной: целый или действительный). Если преобразование возможно, то переменная errcode равна нулю, в противном случае она содержит номер позиции в s, содержащей ошибочный символ, в этом случае содержимое v не меняется. Тип t переменной v должен соответствовать содержимому строки s. Если в s имеется точка или степень числа Е + пп, то v должна быть вещественного типа, в остальных случаях может быть и целой.

2.6.6. Процедуры и функции для работы с текстовыми файлами

Процедура

assign (f:text;name:string);

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

Имя файла на диске состоит из идентификатора, содержащего не более 8 символов, за которым следует расширение – последователь­ность до трех разрешенных символов, отделяемое от имени точкой.

Например, assign(f,D:\USER1\X.txt) – связь файловой переменной с файлом X.txt из папки USER1 на диске D.

Процедура открытия файла f для чтения

reset (f:text);

Чтение начинается с первого элемента файла f.

Процедура reset предполагает, что открываемый файл уже существует (в противном случае компьютер укажет на ошибку). Информация в файле сохраняется.

Процедура открытия файла для записи

rewrite (f:text);

Запись начинается с первого элемента файла f. Если ранее в этот файл были записаны какие-либо элементы, то они становятся недоступными, т. е. файл считается пустым.

Процедура rewrite допускает, что открываемый файл не существует, в этом случае она создает файл с заданным именем.

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

Процедура

close (f:text);

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

Логическая функция

eof (f:text): boolean;

(End Of File) получает значение true, если достигнут признак конца файла и false, признак конца файла не достигнут. Признак конца файла возникает при закрытии файла.

Логическая функция

eoln (f:text):boolean;

(End Of Line) анализирует текущее положение конца строки в текстовом файле f, открытом для чтения. Еoln(f) возвращает значение true, если следующей операцией будет прочитан признак конца строки (символ #13) или конца файла (символ #26) и false во всех прочих случаях. Функция как бы предчувствует результат предстоящего чтения и анализирует его. Необходимость в eoln(f) возникает всякий раз, когда заранее неизвестно, где встретится конец строки.

Функции еof(f) и еoln(f) можно использовать в логических выражениях и, в частности, в операторах цикла, например:

while not eof(f) do

begin

. . . . . . . . . . . . .

end.

Пока не достигнут конец файла (логическое выражение not eof (f) имеет значение true , т. к. eof (f) – false), повторяется циклическая часть программы, заключенная в операторные скобки begin … end.

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

Процедура

readln(f:text; s:string);

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

Процедура

read (f:text; ch:char);

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

Процедура

readln(f:text);

обеспечивает установку указателя файла на первый символ следующей строки.

Запись в файл. Под записью файла понимается вывод результатов оперативной памяти машины на диск, т. е. создание нового файла на внешнем устройстве.

Процедурa

writeln (f:text, s:string);

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

Процедура

write (f:text; ch:char);

выполняет запись значения символа ch в элемент внешнего файла, на который установлен указатель файла. После выполнения записи указатель файла устанавливается на следующую позицию.

Процедура

writeln(f:text);

записывает признак конца строки в элемент файла, на который установлен указатель файла.

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