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

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

Функция MaxAvail

Назначение: Возвращает размер наибольшего свободного блока в динамически распределяемой области памяти.
Описание: function MaxAvail: Longint;
Примечания: MaxAvail возвращает размер наибольшего непрерывного свободного блока в динамически распределяемой области памяти, который можно распределить с помощью процедуры New или GetMem. Для получения общего объема свободной динамически распределяемой памяти используйте функцию MemAvail.

См. пример 21.7

Функция MemAvail

Назначение: Возвращает число свободных блоков в динамически распределяемой области памяти.
Описание: function MemAvail: Longint;
Примечания: Данное число определяется путем сложения размеров всех свободных блоков, расположенных ниже указателя динамически распределяемой области памяти, с объемом свободной памяти, расположенной выше указателя динамически распределяемой области. Заметим, что пока нет обращений к процедурам Dispose и FrееМем, из-за фрагментации динамически распределяемой области памяти маловероятно, что будет доступен блок памяти, размер которого соответствует возвращаемому значению. Для получения размера наибольшего свободного блока используйте функцию МахAvail.

См. пример 21.7

Процедура MkDir

Назначение: Создает подкаталог.
Описание: procedure MkDir(s: String);
Примечания: Параметр s представляет собой выражение строкового типа. Создается новый каталог с маршрутом доступа, заданным строкой s. Последний элемент этой записи не может задавать имя существующего файла.

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

Пример 23.1

BEGIN
 MkDir('New-dir');
END.
Процедура Move

Назначение: Копирует заданное число непрерывных байт из заданного диапазона в указанный целевой диапазон.
Описание: procedure Моvе(var Src, Dst; Count: Word);
Примечания: Параметры Src и Dst представляют собой ссылки на переменные любого типа. Параметр Count - это выражение типа Word. Процедура Моvе копирует байтовый блок из Src, размер которого (в байтах) задается параметром Count, в блок, начинающийся первого байта, заданного параметром Dst. С данной процедурой следует работать аккуратно, поскольку никаких проверок не выполняется.

Когда области, задаваемые параметрами Src и Dst, находятся в одном сегменте, то есть когда адреса сегментов у них совпадают, то процедура Моvе автоматически обнаруживает и компенсирует какие-либо перекрытия. Для статически и динамически распределяемых переменных внутрисегментных перекрытий никогда не происходит (если только это не делается специально) и, таким образом, они не могут обнаруживаться.

Там, где это возможно, для определения параметра Count следует использовать функцию SizeOf.

Пример 23.2

VAR
 a,b: array[1..4] of byte;
 i:byte;
BEGIN
 for i:=1 to 4 do a[i]:=i*2;
 Move(a, b, SizeOf(a));
 for i:=1 to 4 do writeln('b[',i,']=',b[i]);
END.
Процедура New

Назначение: Создает новую динамическую переменную и устанавливает на нее указатель.
Описание: procedure New(var p: Pointer);
Примечания: Параметр p является переменной-указателем и относится к указателям любого типа. Размер выделяемого блока памяти соответствует размеру того типа, на который указывает p. На вновь созданную переменную можно ссылаться с помощью p^. Если для выделения памяти под новую динамическую переменную в динамически распределяемой области недостаточно свободной памяти, то во время выполнения программы происходит ошибка.

Пример 23.4

VAR
 p: ^string;
BEGIN
 new(p);             { выделяет в динамически распределяемой }
                     { области памяти 256 байт               }
 p^:='проверка...';
 writeln(p^);
 dispose(p);         { освобождает память, выделенную для    }
                     { динамической переменной               }
 writeln(p^);
END.
Функция Odd

Назначение: Проверяет, является ли аргумент нечетным числом.
Описание: function Odd(x: Longint): Boolean;
Примечания: Параметр x - это выражение длинного целого типа. Результат принимает значение Truе, если x представляет собой нечетное число и False - в противном случае.

Пример 23.5

BEGIN
 if Odd(5)=true then writeln('Число не четное!')
  else writeln('Число четное!');
END.
Функция Ofs

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

Пример 23.6

VAR
 x:word;
BEGIN
 writeln('Смещение для переменной x = ', Ofs(x));
END.
Функция Ord

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

Пример 23.7

TYPE
 tip1=(red, green, blue);
VAR
 x:tip1;
BEGIN
 writeln('Порядковый номер = ', Ord(blue));
 writeln('Порядковый номер символа @ типа Char = ', Ord('@'));
END.

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