(продолжение 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.