Изучение языка программирования
Турбо Паскаль (Turbo Pascal)

На этом сайте можно: скачать среду программирвания Турбо Паскаль, изучить язык программирования Турбо Паскаль, а так же скачать программы на языке Турбо Паскаль!
Процедуры и функции модуля System.tpu
(продолжение 7)

Процедура Seek

Назначение: Перемещает текущую позицию в файле к заданному элементу.
Описание: procedure Seek(f, n: Longint);
Примечания: Параметр f является любой файловой переменной, кроме текстовой, а n представляет собой выражение целого типа. Текущая позиция в файле f перемещается к элементу с номером n. Номер первого элемента файла равен 0.
Sееk(f,FileSize(f)) перемещает текущую позицию в файле в конец файла.

При указании директивы компилятора {$I-} функция IORеsult будет возвращать значение 0 в том случае, если операция завершилась успешно, и ненулевой код ошибки в противном случае.

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

Пример 26.1

VAR
 f: file of char;
 s: char;
BEGIN
 assign(f,'test.txt');
 reset(f);                   {открыть файл                               }
 seek(f,5);                  {переместить указатель на 5-й символ (байт) }
 s:='@';
 write(f,s);                 {записать новый символ                      }
 close(f);                   {закрыть файл                               }
END.

Пример 26.2

VAR
 f: file of string[3];       {тип файла занимет 3 байта                  }
 s: string[3];
BEGIN
 assign(f,'test.txt');
 reset(f);                   {открыть файл                               }
 seek(f,5);                  {переместить указатель на 5*3-й символ (байт)}
 s:='DoS';
 write(f,s);                 {записать строку символов                   }
 close(f);                   {закрыть файл                               }
END.
Функция SeekEof

Назначение: Возвращает для файла состояние "конец файла" (end-of-file).
Описание: function SeekEof [ (var f: Text) ]: Boolean;
Примечания: За исключением того, что функция SееkEof пропускает все пробелы, знаки табуляции и метки конца строки, она полностью соответствует функции Eof. Ее полезно использовать при считывании числовых значений из текстового файла.

При указании директивы компилятора {$I-} функция IORеsult будет возвращать значение 0 в том случае, если операция завершилась успешно, и ненулевой код ошибки в противном случае.

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

Пример 26.3

VAR
 f: text;
 s:char;
BEGIN
 assign(f,'test.txt');
 reset(f);                   {открыть файл                       }
 while SeekEof(f)=false do   {ЦИКЛ - если еще не конец файла, то }
 begin
  read(f,s);                 {считать символ из файла            }
  write(s);                  {и показать его на экране           }
 end;
 close(f);                   {закрыть файл                       }
 writeln;
 writeln('Конец файла!');
END.
Функция SeekEoln

Назначение: Возвращает для файла состояние "конец строки" (end-of-line).
Описание: function SeekEoln [ (var f: Text) ]: Boolean;
Примечания: За исключением того, что функция SееkEоln пропускает все пробелы, знаки табуляции и метки конца строки, она полностью соответствует функции Eoln. Ее полезно использовать при считывании числовых значений из текстового файла.

При указании директивы компилятора {$I-} функция IORеsult будет возвращать значение 0 в том случае, если операция завершилась успешно, и ненулевой код ошибки в противном случае.

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

Пример 26.4

VAR
 f: text;
 s:char;
BEGIN
 assign(f,'test.txt');
 reset(f);                   {открыть файл                        }
 while SeekEoln(f)=false do  {ЦИКЛ - если еще не конец строки, то }
 begin
  read(f,s);                 {считать символ из файла             }
  write(s);                  {и показать его на экране            }
 end;
 close(f);                   {закрыть файл                        }
 writeln;
 writeln('Конец файла!');
END.
Функция Seg

Назначение: Возвращает сегмент для указанного объекта.
Описание: function Seg(x): Word;
Примечания: Параметр x представляет собой любую переменную или идентификатор процедуры или функции. Результат длиной в слово является адресом сегмента для x.

Пример 26.5

VAR
 x:real;
BEGIN
 writeln(Seg(x));
 readln;
END.
Процедура SetTextBuf

Назначение: Перемещает текущую позицию в файле к заданному элементу.
Описание: procedure SetTextBuf(var f: Text; var Buf[Size: Word]);
Примечания: Параметр f представляет собой файловую переменную, соответствующую текстовому файлу. Параметр Buf (буфер) - любая переменная, а параметр Size (размер) - необязательное выражение длиной в слово.

Каждая файловая переменная для текстового файла имеет внутренний буфер размером в 128 байт, который по умолчанию используется для буферизации операций чтения и записи. Этот буфер подходит для использования во многих прикладных задачах, однако программы, выполняющие значительное количество операций ввода-вывода (например, задачи, осуществляющие копирование или преобразование текстовых файлов) будут лучше работать с буфером большего размера, поскольку это уменьшает перемещение головки по поверхности диска и избыточное использование файловой системы.

Процедура SetTextBuf переназначает буфер, используемый для текстового файла f: вместо внутреннего буфера файла f используется буфер, заданный параметром Buf. Параметр Size задает размер буфера в байтах. Если этот параметр опущен, то подразумевается использование SizeOf(Buf), то есть по умолчанию в качестве буфера используется вся область памяти, занятая буфером. Новый буфер действует до тех пор, пока для f вновь не выполняется процедура Assign.

Ограничения: Данная процедура никогда не должна применяться для открытого файла.
Borland Pascal не обеспечивает существования буфера на все время выполнения операций ввода-вывода для файла. Общей ошибкой, в частности, является введение в качестве буфера локальной переменной и затем использование файла вне процедуры, в которой описывается буфер.

Пример 26.6

VAR
 f: text;
 ch: char;
 buf: char;                  { буфер 10 К                      }
BEGIN
 assign(f, 'test.txt');
 SetTextBuffer(f, buf);      {ввести для более быстрого чтения }
                             {буфер большего размера           }
 reset(f);
 { вывести текстовый файл на экран }
 while not Eof(f) do
 begin
  read(f, ch);
  write(ch);
 end;
readln;
END.
Функция Sin

Назначение: Возвращает синус аргумента.
Описание: function Sin(x: Real): Real;
Примечания: Параметр x является выражением вещественного типа. Результатом будет синус x. Предполагается, что это значение задает угол в радианах.

Пример 26.7

BEGIN
writeln(Sin(30*Pi/180):3:1);                {синус 30 градусов}
readln;
END.
Функция SizeOf

Назначение: Возвращает число байт, занимаемых аргументом.
Описание: function SizeOf(x): Word;
Примечания: Параметр x является ссылкой на переменную или идентификатором типа. Данная функция возвращает число байт памяти, занимаемых x.

При передаче значений функциям FillChar, Моvе, GetМем всегда следует использовать функцию SizeOf:
FillChar(s, SizeOf(s), 0);
GetMem(p, SizeOf(RecordType));

Пример 26.8

VAR
 s:string[3];
 x:integer;
 y:longint;
 z:byte;
BEGIN
writeln('s - ',SizeOf(s), ' байт');
writeln('x - ',SizeOf(x), ' байт');
writeln('y - ',SizeOf(y), ' байт');
writeln('z - ',SizeOf(z), ' байт');
readln;
END.
Функция SPtr

Назначение: Возвращает текущее значение регистра SP.
Описание: function SPtr: Word;
Примечания: Результат длиной в слово представляет собой смещение указателя стека внутри сегмента стека.

Пример 26.9

BEGIN
writeln(SPtr);
readln;
END.
Функция Sqr

Назначение: Возвращает квадрат аргумента.
Описание: function Sqr(x);
Примечания: Параметр x - это выражение целого или вещественного типа. Результат, имеющий тот же тип, что и x, представляет собой квадрат x, то есть x*x.

Пример 26.10

BEGIN
writeln('5^2 = ',Sqr(5));                 {5^2 =25}
readln;
END.
Функция Sqrt

Назначение: Возвращает квадратный корень аргумента.
Описание: function Sqrt(x: Real): Real;
Примечания: Параметр x представляет собой выражение вещественного типа. Результатом является квадратный корень x.

Пример 26.11

BEGIN
writeln(Sqr(25));                         {= 5    }
readln;
END.
Функция SSeg

Назначение: Возвращает текущее значение регистра SS.
Описание: function SSeg: Word;
Примечания: Результат типа Word представляет собой адрес сегмента стека.

Пример 26.12

BEGIN
writeln(SSeg);
readln;
END.

<<< Назад * Оглавление * Далее >>>